HDFS重新出现错误:复制不足的块



我们的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 FactorMinimal Block Replication都设置为2

由于问题仅发生大约每24h发生一次,因此很难解决问题,而试验和错误是我唯一的度假胜地。我不知道为什么这个错误继续回来!任何建议,将不胜感激。谢谢

通过在Cloudera Manager中设置以下HDFS配置解决的问题:

  1. 转到HDFS服务。
  2. 单击"配置"选项卡。
  3. 选择范围>名称。
  4. Filesystem Trash Interval0 day(s)

    输入'0'禁用垃圾功能。

也可以使用fs.trash.interval

配置此属性

设置了此设置后,我删除了所有有害的未复制垃圾块 - 通过在运行以下命令中产生的under_replicated_files文件中显示:

hdfs fsck / | grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files 

我最终只是删除了用户的所有.trash。

删除后,这一切都阻止了其他任何东西都被移至.trash(我意识到这可能不是每个人都可以接受的解决方案,但这对我的用例来说是完全可以的)。删除所有未复制的块也意味着警告消失了。

最新更新