2017-09-25 86 views
0

我们的Hadoop集群每天报告有“低复制块”。它通过Cloudera Manager进行管理。健康警语的一个例子是:HDFS重复发生的错误:低复制块

! Under-Replicated Blocks

Concerning: 767 under replicated blocks in the cluster. 3,115 total blocks in the cluster. Percentage under replicated blocks: 24.62%. Warning threshold: 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小时一次,所以尝试修复是困难和耗时的,试错法是我唯一的手段。我不知道为什么这个错误不断回来!任何建议,将不胜感激。通过设置在Cloudera的经理以下HDFS配置解决由于

+0

基本上,如果您有一个数据未完全复制的HDFS应该自动将这些块复制到其他数据节点以匹配复制因子。 您还可以运行CM> HDFS> Actions下拉菜单中给出的Balancer来修复此错误。 集群中有多少个数据节点?您是否通过NN Web UI看到哪些文件具有复制块?这些文件是否是由作业创建的临时文件。您是否看到一旦相关工作完成后,这些警告是否会在没有做任何事情的情况下消失? – Salim

+0

你有没有和问题发生时一样的节奏运行的工作? – tk421

+0

@ tk421不幸的是,它似乎没有任何数据摄入工作(或任何工作,就此而言)运行 – Smittey

回答

0

问题:

  1. 转到HDFS服务。
  2. 单击配置选项卡。
  3. 选择范围> NameNode。
  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一旦被删除(我意识到可能不是一个可以接受的解决方案,但对我的用例来说这完全没问题)。此外,删除所有未复制块意味着警告消失。