错误:无法启动datanode
单独启动datanode和namenode可以
单独启动resourcemanager后datanode消失。
日志:
2014-11-04 16:40:38,547 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool <registering> (Datanode Uuid unassigned) service to hadoop-05/192.168.0.7:9000
java.io.IOException: Incompatible clusterIDs in /home/hadoop/dfs/data: namenode clusterID = CID-aa368736-255e-481c-ba68-5f930048a523; datanode clusterID = CID-392c8850-d1f7-4ea7-8e5e-cea5edd22cd3
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:434)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:188)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:214)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:961)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:932)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:286)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:227)
由日志可以看出 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 保持不变。
启动集群的命令
hadoop-daemon.sh start/stop namenode
hadoop-daemon.sh start/stop datanode
yarn-daemon.sh start/stop resourcemanager
yarn-daemon.sh start/stop nodemanager
或者
start-dfs.sh启动namenode和datanode
start-yarn.sh启动resourcemanager和nodemanager
或者
start-all.sh
stop-all.sh