当前环境的HDFS的空间使用率,即将达到95%,手动清理比较繁琐,需要写个脚本定期清理下最早5天的日志量。方法之一:
案例
定期检查hdfs的空间占用率,若超过95%,则删除最早5天的日志文件。
解决思路
- 设定使用率阈值
- 查询当前使用率,若达到阈值,查找出最早5天的文件
- 将查找到的文件删除
问题
- Linux shell可以用find通过时间来查找文件,但hdfs shell 的find参数似乎不能用时间来查找。因此需要先将dfs ls下的文件进行时间排序。就可以找出最早的文件了.
- hdfs dfs rm用来删除文件,这个命令是将文件移动到回收站,回收站同样占用空间。使用-skipTrash参数可以直接永久删除。
脚本编写
#!/bin/bash
# 检查dfs磁盘空间,清理过期日志
day=5
limit=95
basedir=/app/applogs
logfile=/app/scripts/logs/clear_hdfs_logs.log
logger(){
msg=$1