我在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:目录发生无效的目录或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警告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:块池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警告org.apache.hadoop.hdfs.server.datanode.DataNode:offerService中的IOException
java.io.IOException:找不到块池BP-208475052-10.165.18.36-1351280731538
所以,我有一些问题:
我感谢您的帮助。
爱德华多
最佳答案
我将在这里回答我自己的问题。
我遇到的问题是由于在移动数据块后具有错误的文件/目录权限和所有权引起的。我以root用户身份进行了移动,并且移动的文件最终具有以下权限:
drwx ----- T 2根根12288 Dec 19 23:14 subdir28
一旦将其更改回原始位置,DN就会重新正确启动,NN会停止报告丢失的块或损坏的文件。这是它应具有的权限:
drwxr-xr-t 2 hdfs hadoop 12288 Dec 20 11:47 subdir28
关于hadoop - 手动重新平衡hadoop hdfs磁盘后,DataNode将无法重新启动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20698101/