脚本说明
维护Hadoop集群的时候,经常会遇到部分节点的某些磁盘因为日志过多出现可用空间不足,导致节点程序异常的问题。又由于集群的规模较大,各服务器的配置以及磁盘划分又很相似,因此编辑两个脚本,联合使用,以避免此类问题的发生,也同时提高了维护工作的效率。
脚本代码
脚本1
说明:
由于集群各节点挂载的磁盘分区都以data*命名,所以检索data。并将检索到的磁盘分区中的日志删除,以释放磁盘空间。
[root@localhost]# vim /root/ys/rm_log/rm_log.sh
#!/bin/bash
for i in `df -hT | grep data | awk '{print $7}'`;do find $i -type f -name "*.log" | xargs -i rm -rf {};done
脚本2
说明:
由于集群规模庞大,不可能在每个节点中手动创建删除日志的计划任务。特编辑脚本2,用于批量上传删除日志脚本,并批量添加远程服务器的计划任务。
#!/bin/bash
work_path=/root/ys/up_rmlog
soft_path=/root/ys/rm_log
for ip in `cat ${work_path}/ip.txt`
#ip.txt中包含集群所有节点的IP地址。
do
if ssh root@${ip} test -e ${soft_path};then
scp ${soft_path}/rm_log.sh root@{ip}:${soft_path}/
else
ssh root@${ip} mkdir -p ${soft_path}
scp ${soft_path}/rm_log.sh root@${ip}:${soft_path}/
#判断远程服务器上有无程序目录,有则直接scp脚本至远程目录,没有则先创建远程目录,然后再scp脚本。
fi
ssh root@${ip} '(echo "01 */12 * * * /root/ys/rm_log/rm_log.sh";crontab -l) | crontab'
#在远程服务器中创建与删除日志有关的计划任务。
done
脚本使用方法
1,在脚本2的工作目录中创建ip.txt文件,该文件中包含集群所有节点的IP地址。
2,运行脚本2,便可以实现批量上传脚本文件至远程服务器,并为远程服务器自动添加删除日志相关的计划任务。