hdfs重复出现错误:在复制块下

tnkciper  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(373)

我们的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小时才发生一次,所以尝试解决这个问题既困难又耗时,而尝试和错误是我唯一的办法。我不知道为什么这个错误会不断出现!如有任何建议,将不胜感激。谢谢

tag5nh1u

tag5nh1u1#

在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

最后我只是删除了所有的垃圾。
所有这些都阻止了其他任何东西在被删除后被移动到垃圾桶中(我意识到这可能不是每个人都能接受的解决方案,但这对于我的用例来说是非常好的)。此外,删除所有未复制的块意味着警告消失。

相关问题