1、统计hdfs目录
hdfs dfs -ls -R /tmp >> tmpdirlog
2、排除以d开头或者包含2024-06、2024-07的行,只清理过期文件
grep -E -v “^d| 2024-0[6-7]” tmpdirlog >> outtmpdirlog
3、根据过期文件记录清理过期数据
cat outtmpdirlog | awk ‘{print $8}’ |xargs hdfs dfs -ls
cat outtmpdirlog | awk ‘{print $8}’ |xargs hdfs dfs -rm -r
4、正则匹配清理过期目录
hdfs dfs -rm -r /flink/2024-01-*
hdfs dfs -rm -r /flink/2024-0[1-5]*
5、回收站清理策略
fs.trash.interval 垃圾桶功能(需要重启HDFS)
如果为零,垃圾桶功能将被禁用
设置1天后垃圾回收站中的文件会被系统永久删除
如果需要直接删除,不放进回收站需要使用下面命令删除
hadoop fs -rm -r -skipTrash /test
fs.trash.checkpoint.interval 创建检查点时间间隔(需要重启HDFS)
设置1小时创建一次检查点目录,会在/user/用户下每隔1小时创建一个检查点目录,并把垃圾回收站中的文件移动到该目录下
手动清空检查点 hadoop fs -expunge
等到1天后将删除所有检查点目录,如果该参数为0,则该值默认设置为fs.trash.interval的值,
会在每次创建检查点时删除比fs.trash.interval更早创建的检查点目录,设置的值应为<=fs.trash.interval