现象:
nameNode 正常启动,其他几台机器的 dataNode 均未启动;50070中无 Live Node。
查看 dataNode 日志:
tail -1000 $HADOOP_HOME/logs/hadoop-hadoop-datanode-[hostname].log
2018-03-26 23:36:08,583 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /home/hadoop/hdpData/dfs/data: namenode clusterID = CID-1e632e00-4bf0-40e9-9680-4426f38b0a56; datanode clusterID = CID-58d38808-bb74-4459-b581-b3ddbcc27c65
▽
2018-03-26 23:36:08,583 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to centos00/192.168.2.100:9000. Exiting.
java.io.IOException: All specified directories are failed to load.
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1342)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1308)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:314)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:226)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:867)
at java.lang.Thread.run(Thread.java:745)
从报错信息中可以看出是 dataName 与 NameNode 的集群 id 不同所导致。
验证报错信息,分别查看 hadoop 数据目录下 namenode。(hdpData 是我自定义的数据目录)
cat ~/hdpData/dfs/name/current/VERSION
经查看,确实两台机器的 clusterId 不一致。
由于是测试用机器,因此直接 rm -rf 了 dataNode 机器上 hdpData 目录下的所有内容;然后在nameNode 对应机器上进行服务重启。(其实只需要删除 hdpData/dfs/data 即可,服务也可以单独重启 dataNode)
问题解决。50070中正常显示 dataNode;jps 正常;hdpData 目录下 dfs 目录重新生成,VERSION 中clusterId 一致。