天天看点

Hadoop 2.7.2 HA datanode 启动失败处理

刚配置的Hadoop + Zookeeper的双NameNode的HA。Active、standby都正常,journalnodes、datanodes这些都正常。

一时手痒,非要重新来一次。好了,按照原来步骤操作,zkfc没事,namenode没事,journalnodes没事,但是datanode死活就是出不来了。页面里显示“live no1de”和“dead node”都是 0 。

进datanode执行 sbin/hadoop-daemon.sh start datanode也不报错,说是写到某个out3文件,查看也没发现错误。

继续查日志,找到datanode-log,发现如下错误信息:

org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to test-datanode-1/10.11.22.33:9000. Exiting
           

在往上一点点,发现另一条线索:

Incompatible clusterIDs in /data/hadoop-2.7.2/hdfs/data: namenode clusterID = CID-db8e18c0-800f-4f1d-8573-0358a72b0484; datanode clusterID = CID-2cd17333-42ea-4354-a788-8765a154803b
           

clusterID不匹配造成的。

原因:

当时“再来一次”,又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。

所以,解决办法也很简单了,把name/current/VERSION里面的clusterID复制下来,依次替换data/current/VERSION里的clusterID,再执行:

sbin/hadoop-daemon.sh start datanode
           

就可以了。

继续阅读