我们的hadoop集群每天都报告有“未复制的块”。它通过cloudera manager进行管理。健康警告的一个例子是:
! 在复制块下
关于:集群中复制块下的767。群集中共有3115个块。复制块下的百分比: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
.
由于这个问题大约每24小时才发生一次,所以尝试解决这个问题既困难又耗时,而尝试和错误是我唯一的办法。我不知道为什么这个错误会不断出现!如有任何建议,将不胜感激。谢谢
1条答案
按热度按时间tag5nh1u1#
在cloudera manager中设置以下hdfs配置可解决此问题:
转到hdfs服务。
单击配置选项卡。
选择范围>名称节点。
Filesystem Trash Interval
:0 day(s)
输入“0”将禁用垃圾箱功能。也可以使用配置此属性
fs.trash.interval
一旦我设置了这个,我就删除了所有有问题的未复制垃圾块-通过查看under_replicated_files
通过运行以下命令生成的文件:最后我只是删除了所有的垃圾。
所有这些都阻止了其他任何东西在被删除后被移动到垃圾桶中(我意识到这可能不是每个人都能接受的解决方案,但这对于我的用例来说是非常好的)。此外,删除所有未复制的块意味着警告消失。