我在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
所以,我有一些问题:
感谢您的帮助。 爱德华。
答案 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