zookeeper清理日志

zookeeper 清理日志

在使用zookeeper过程中,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出(默认情况下只有dataDir目录,snapshot和事务日志都保存在这个目录中,正常运行过程中,ZK会不断地把快照数据和事务日志输出到这两个目录,并且如果没有人为操作的话,ZK自己是不会清理这些文件的,需要管理员来清理。

配置方法

从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:

For Example: 一个zoo.cfg配置的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/apache-hadoop/zookeeper/var/data
clientPort=2181
dataLogDir=/home/hadoop/apache-hadoop/zookeeper/var/datalog
maxClientCnxns=300
server.1=namenode001-host.mjq-sukbeta.com:2888:3888
server.2=namenode002-host.mjq-sukbeta.com:2888:3888
server.3=datanode001-host.mjq-sukbeta.com:2888:3888
server.4=datanode002-host.mjq-sukbeta.com:2888:3888
server.5=datanode003-host.mjq-sukbeta.com:2888:3888
autopurge.snapRetainCount=20
autopurge.purgeInterval=48

autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。

autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

脚本方法

写了一个脚本, 可以每天定时执行清理。

脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

#snapshot file dir
dataDir=/home/hadoop/apache-hadoop/zookeeper/var/data/version-2
#tran log dir
dataLogDir=/home/hadoop/apache-hadoop/zookeeper/var/datalog/version-2
#zk log dir
#Leave 30 files
count=30
count=$[$count+1]
ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f
ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f
  • 需要根据自己的情况修改脚本中的dataDir、dataLogDir路径。

如果感觉文章还可以的话,帮点点下面的广告哦!非常感谢!

感谢您的支持!