hadoop的datanode的clusterID 和 namenode的clusterID 不匹配

enode clusterID = CID-14fdadb8-2b0e-494f-9596-6b65fc3a3a35; datanode clusterID = CID-591f9cd9-d1b2-4fab-899f-63c935004a67
2017-10-01 10:19:00,752 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to st2/10.0.0.209: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:1338)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1304)
 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:744)

从日志中可以看出,原因是因为datanode的clusterID 和 namenode的clusterID 不匹配。

 

打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令可以看到datanode已正常启动。

 

出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。

 
 
posted @ 2017-10-01 10:37  滴滴滴  阅读(1839)  评论(0编辑  收藏  举报