[haddop]org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed

じ☆ve宝贝 1年前 ⋅ 998 阅读
2016-07-11 03:36:12,570 INFO org.apache.hadoop.hdfs.server.common.Storage: Lock on /data/hadoop/dfs/data/in_use.lock acquired by nodename 5846@localhost.localdomain
2016-07-11 03:36:12,573 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /data/hadoop/dfs/data: namenode clusterID = CID-74ab72a1-21f6-46f8-8eb1-107b11aeb3a4; datanode clusterID = CID-13c79279-c9ab-4d18-bd00-7c1a74137112
2016-07-11 03:36:12,579 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to /192.168.159.128:19000. Exiting. 
java.io.IOException: All specified directories are failed to load.

从日志上看是因为 datanode的clusterID 和 namenode的clusterID 不匹配。

解决方法:

根据日志中的路径/data/hadoop/tmp/dfs,master可以看到name目录,salve可以看到data目录,

将name/current下的VERSION中的clusterID复制到data/current下的VERSION中,覆盖掉原来的clusterID,目的是让两个保持一致。

然后重启,就可以看到slave上的DataNode进程已经起来。

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


全部评论: 0

    我有话说: