手动重新平衡hadoop hdfs磁盘后,DataNode将不会重新启动

时间:2013-12-20 07:03:34

标签: hadoop

我在40台机器的集群中使用Hadoop hadoop-2.0.0-mr1-cdh4.1.2。 每台机器有12个由hadoop使用的磁盘。 一台机器中的某些磁盘不平衡,我决定手动重新平衡,如本文所述:rebalance individual datanode in hadoop 我停止了该服务器上的DataNode,移动了块文件对,在一些磁盘之间移动了整个子目录。

一旦我停止了DataNode,NameNode就会通过在UI中显示以下消息来抱怨丢失的块: 警告:有2002个丢失的块。请检查日志或运行fsck以识别丢失的块。

然后,我尝试重启DataNode。它拒绝成功启动,它会记录错误和警告,如下所示:

java.io.IOException:dir发生了无效的目录或I / O错误:/data/disk3/dfs/data/current/BP-208475052-10.165.18.36-1351280731538/current/finalized/subdir61/subdir28

2013-12-20 01:40:29,046 WARN org.apache.hadoop.hdfs.server.datanode.DataNode:offerService中的IOException java.io.IOException:找不到块池BP-208475052-10.165.18.36-1351280731538

2013-12-20 01:40:29,088错误org.apache.hadoop.hdfs.server.datanode.DataNode:块池的BPOfferService中的异常BP-208475052-10.165.18.36-1351280731538(存储ID DS-737580588- 10.165.18.36-50010-1351280778276)服务于aspen8hdp19.turner.com/10.165.18.56:54310 显示java.lang.NullPointerException

2013-12-20 01:40:34,088 WARN org.apache.hadoop.hdfs.server.datanode.DataNode:offerService中的IOException java.io.IOException:找不到块池BP-208475052-10.165.18.36-1351280731538

所以,我有一些问题:

  • 是否足以遵循我提到的方法?即停止DataNode,移动块文件对和/或子目录,重新启动DataNode。
  • 我是否需要重启NameNode或其他服务?
  • 为什么抱怨丢失的块或损坏的文件?
  • 如何重新启动DataNode并摆脱这些异常,从而让DN与NN成功通信?

感谢您的帮助。 爱德华。

1 个答案:

答案 0 :(得分:2)

我将在这里回答我自己的问题。

我遇到的问题是由于在移动数据块后出现了错误的文件/目录权限和所有权。我以root身份进行了移动,移动的文件最终获得了以下权限:

drwx ----- T 2 root root 12288 Dec 19 23:14 subdir28

将其更改回原始版本后,DN正确重新启动,NN停止报告丢失的块或损坏的文件。这是它应具有的权限:

drwxr-xr-t 2 hdfs hadoop 12288 Dec 20 11:47 subdir28