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

时间:2017-09-25 10:33:48

标签: hadoop hdfs cloudera cloudera-manager

我们的Hadoop集群每天都会报告“Under-replicated blocks”。它通过Cloudera Manager进行管理。健康警告的一个例子是:

  

!复制块不足

     

关于:群集中复制块下的767。群集中总共有3,115个块。复制块下的百分比:24.62%。警告阈值:10.00%。

我一直在运行修复问题的命令,但第二天早上警告又回来了,有时候没有添加任何新数据。其中一个暂时成功的命令是

hdfs dfs -setrep -R 2 /*

我也试过another recommended command

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

由于问题只发生在大约每24小时一次,因此尝试修复是困难和耗时的,试错法是我唯一的选择。我不知道为什么这个错误会继续回来!任何建议,将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

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

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

    输入“0”将禁用垃圾回收功能。

  5. 也可以使用fs.trash.interval

    配置此属性

    一旦我设置了这个,我删除了所有违规的未复制垃圾块 -  通过查看运行以下命令生成的under_replicated_files文件来显示:

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

    我最终只为用户删除了所有的.Trash。

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