Hadoop、Strom集群实现日志自动清理

问题描述:Hadoop+Storm集群,运行一段时间ZooKeeper等关键进程自动停止运行,经检测是系统磁盘不足

系统磁盘100%,如下:
系统磁盘100%
利用如下命令查看文件及其大小,找罪魁祸首:

find / -size +100M -exec ls -lh {} \;//查找大文件

查找大文件后发现,空间均被ZooKeeper产生的log占用,后发现在 /var/lib/zookeeper/version-2 目录下有一些大型文件*.log,此目录是在ZooKeeper的zoo.cfg中配置的dataDir。

现以以下方式对log文件进行定期清理。

1、首先创建执行文件:clean_zook_log.sh,代码如下

#!/bin/bash
#只保留最新的10个log与snapshot

#snapshot file dir
dataDir=/var/lib/zookeeper/version-2
# log dir(即在zoo.cfg中配置的dataDir:)
dataLogDir=/var/lib/zookeeper/version-2
#Leave 10 files
count=10
count=$[$count+1]
ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f
ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f

此文件执行后会保留 /var/lib/zookeeper/version-2 目录下最新的10个log文件和最新10个snapshot文件,删除旧文件。

2、将此执行文件放置到指定文件路径,博主放到了 /root/runShell/zooKeeperLogClean/ 下。

3、然后在Linux命令行下执行:

crontab -e

后出现编辑界面,此处编辑同VIM ,crontab是一个自动执行某些程序的服务,详情自行百度。

4、在出现的编辑界面中输入如下代码:

01 03 * * * /root/runShell/zooKeeperLogClean/clean_zook_log.sh //路径是第二步的文件路径

保存退出后系统会在每天的3:01自动执行清理log文件的代码,防止磁盘再次被写满。

你可能感兴趣的:(Hadoop、Strom集群实现日志自动清理)