问题出现:
在hdfs配置中start-dfs.sh 无法启动datanode,便无法对文件进行上传。
查看日志:
2017-03-03 06:03:44,639 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /hadoop2: namenode clusterID = CID-3e8487af-920d-42b4-a22c-ba1bfa1368f9; datanode clusterID = CID-c3b09e98-83e0-4e3f-a36d-f486aee4f68d
2017-03-03 06:03:44,639 INFO org.apache.hadoop.hdfs.server.common.Storage: Lock on /hadoop3/in_use.lock acquired by nodename 12882@hadoop1
2017-03-03 06:03:44,639 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /hadoop3: namenode clusterID = CID-3e8487af-920d-42b4-a22c-ba1bfa1368f9; datanode clusterID = CID-c3b09e98-83e0-4e3f-a36d-f486aee4f68d
2017-03-03 06:03:44,640 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to hadoop2/192.168.114.137:8020. Exiting.
java.io.IOException: All specified directories are failed to load.
由错误日志可以看出namenode的clusterID和datanode 的clusterID是不同的。
解决方法:
将namenode中的current目录copy到datanode中的current,namenode的目录和datanode 的目录在hdfs-site.xml文件中能够找到
产生问题原因:
在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 没有改变