[email protected]:/usr/local/hadoop/hadoop-2.2.0/hdfs/data/current$ jps 11634 SecondaryNameNode 11315 NameNode 11779 ResourceManager 11910 NodeManager 12534 Jps
启动hadoop后发现DataNode没有启动,查看日志logs/hadoop-hadoop-datanode-yts-Rev-1-0.log中的内容,日志
查看日志如下:
java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/hadoop-2.2.0/hdfs/data: namenode clusterID = CID-519c284d-c80a-47e0-b660-b7bba79f363e; datanode clusterID = CID-08483061-44f1-483c-a1fa-f8160835015d
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:391)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:191)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:219)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:837)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:808)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:280)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:222)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:664)
at java.lang.Thread.run(Thread.java:745)
2014-10-11 09:49:02,500 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool BP-1615382850-127.0.1.1-1412990967046 (storage id DS-1929896092-127.0.1.1-50010-1412933345417) service to localhost/127.0.0.1:9000
2014-10-11 09:49:02,502 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool BP-1615382850-127.0.1.1-1412990967046 (storage id DS-1929896092-127.0.1.1-50010-1412933345417)
2014-10-11 09:49:04,502 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2014-10-11 09:49:04,504 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
2014-10-11 09:49:04,506 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
从日志中可以看出,原因是因为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 保持不变。