我们的hadoop群集每天都报告" "重复的块" "。它是通过Cloudera Manager管理的。健康警告的一个例子是:
!重复的块
关于:在集群中重复的块下的767。群集中的总块为3,115个。在复制区域下的百分比:24.62%。警告阈值:10.00%。
我一直在运行解决问题的命令,但是第二天早上,警告又回来了,有时没有添加任何新数据。暂时成功的命令之一是
hdfs dfs -setrep -R 2 /*
我也尝试了另一个推荐命令
su hdfs
hdfs fsck / | grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files
for hdfsfile in `cat /tmp/under_replicated_files`; do echo "Fixing $hdfsfile :" ; hadoop fs -setrep 2 $hdfsfile; done
都可以工作,但修复程序不是永久的。
在Cloudera Manager中,Replication Factor
和Minimal Block Replication
都设置为2
。
由于问题仅发生大约每24h发生一次,因此很难解决问题,而试验和错误是我唯一的度假胜地。我不知道为什么这个错误继续回来!任何建议,将不胜感激。谢谢
通过在Cloudera Manager中设置以下HDFS配置解决的问题:
- 转到HDFS服务。
- 单击"配置"选项卡。
- 选择范围>名称。
-
Filesystem Trash Interval
:0 day(s)
输入'0'禁用垃圾功能。
也可以使用fs.trash.interval
设置了此设置后,我删除了所有有害的未复制垃圾块 - 通过在运行以下命令中产生的under_replicated_files
文件中显示:
hdfs fsck / | grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files
我最终只是删除了用户的所有.trash。
删除后,这一切都阻止了其他任何东西都被移至.trash(我意识到这可能不是每个人都可以接受的解决方案,但这对我的用例来说是完全可以的)。删除所有未复制的块也意味着警告消失了。