内容来源:http://blog.csdn.net/love666666shen/article/details/74350358
Question:多次格式化文件系统导致datanode无法启动
Reason:执行文件系统格式化时(即执行命令$ bin/hadoop namenode -format 后),会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径,在hdfs-site.xml中)中保存一个current/VERSION(我的路径为 /usr/local/data/namenode/current/VERSION)文件,记录namespaceID,标识了所格式化的namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径,同在hdfs-site.xml中查询)的current/VERSION文件(路径为/usr/local/data/datanode/current/VERSION)只是你第一次格式化时保存的namenode的ID,因此就会造成namdenode 的 namespaceID 与 datanode的namespaceID 不一致,从而导致namenode和 datanode的断连。
Check:
查看日志(在/usr/local/hadoop/logs/hadoop-hadoop-datanode-hadoop-virtual-machine.log下)发现:
************************************************************/
2017-07-3 17:40:59,973 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/xsj/hadoop/hadoop-0.20.2/hdfs/data: namenode namespaceID = 1825353369; datanode namespaceID = 1986950792
Answer:将/namenode/current/VERSION中的的clusterID复制到data/datanode/current/VERSION中,覆盖掉原来的clusterID,让两个一致。
重启,解决。