长期以来,我观察到 Hadoop 框架在垃圾当前目录上设置了一个检查点,而不考虑时间间隔,而在创建自动检查点后在指定的删除间隔内永久删除文件/目录。这是我测试过的内容:
vi core-site.xml
<property>
<name>fs.trash.interval</name>
<value>5</value>
</property>
hdfs dfs -put LICENSE.txt /
hdfs dfs -rm /LICENSE.txt
fs.TrashPolicyDefault:Namenode 垃圾配置:删除间隔 = 5 分钟,Emptier 间隔 = 0 分钟。移动:'hdfs://hacluster/LICENSE.txt' 到垃圾箱:hdfs://hacluster/user/hduser/.Trash/Current
hdfs dfs -ls -R /user/hduser
/user/hduser/.Trash/当前
/user/hduser/.Trash/Current/LICENSE.txt
一段时间后:
/user/hduser/.Trash/160229140000
/user/hduser/.Trash/160229140000/LICENSE.txt
我创建了一个示例 bash 脚本来跟踪 Hadoop 在什么时候将“当前”目录设置为检查点,以及在检查点之后它是否在指定的垃圾间隔中删除:
垃圾间隔:5分钟
- 自动检查点 - 大约 30 秒
- 永久删除 - 大约 5 分钟
垃圾间隔:10分钟
- 自动检查点 - 大约 90 秒
- 永久删除 - 大约 10 分钟
垃圾间隔:15分钟
- 自动检查点 - 大约 630 秒
- 永久删除 - 大约 15 分钟
垃圾间隔:20分钟
- 自动检查点 - 大约 1080 秒
- 永久删除 - 大约 20 分钟
垃圾箱间隔 - 20 分钟(删除 - 手动检查点)
hdfs dfs -expunge
- 手动检查点 - 一次
- 永久删除 - 大约 20 分钟
任何人都可以帮助了解 Hadoop 何时创建此检查点。采用什么机制来创建垃圾检查点?如果是资源可用性,那么我的测试环境在此测试期间的开销为零。