执行start-all.sh后,datenode没有启动
2015-03-24 19:33:24,677 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to localhost/127.0.0.1:9000. Exiting.
java.io.IOException: Incompatible clusterIDs in /home/hadoop/dfs/data: namenode clusterID = CID-a05f229d-b60f-49be-ba5f-2d3d2cbd236e; datanode clusterID = CID-aaa33654-d531-499e-8182-48f933479693
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:646)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:320)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:403)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:422)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1311)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1276)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:314)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:220)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:828)
at java.lang.Thread.run(Thread.java:745)
2015-03-24 19:33:24,681 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool <registering> (Datanode Uuid unassigned) service to localhost/127.0.0.1:9000
2015-03-24 19:33:24,686 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool <registering> (Datanode Uuid unassigned)
2015-03-24 19:33:26,688 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2015-03-24 19:33:26,689 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
2015-03-24 19:33:26,693 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
原因:重新格式化dfs后,namenode的clusterID会重新生成,而datanode的clusterID 保持不变。datanode的clusterID 和 namenode的clusterID 不匹配引发错误。
解决方案:第一种方案:删除datanode的所有资料。第二种方案:打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,查看datanode的clusterID 和 namenode的clusterID,修改datanode里VERSION文件的clusterID 与namenode里的一致。
参考:http://www.cnblogs.com/kinglau/p/3796274.html
《Hadoop实战 第2版》