有时候因为自己的一些错误修改,导致Hadoop集群总是有些节点启动不起来。 这是就需要重新格式化HDFS,在重启。 但是重新格式化会导致一个问题,就是以前的namenode中已经记录了datanode的namespaceId了,重新启动会给datanode另一个Id,导致最终启动集群的时候,datanode总是启动不起来。

解决办法(执行下面两条命令): 先删除namenode历史的文件,再格式化重启。 直接删除namenode的配置文件目录,在重新format

rm -rf ../hdfs/na*
./hadoop namenode -format

这时还需要将现在的新的datanode的namespaceId修改为以前的id。即和namenode的namespaceId一致。

可以在重启直接先记下来。在hdfs.site.xml配置了datanode的目录 找到current/version就可以看到namenode了。

或者可以先直接运行 bin/start-all.sh命令,启动完,在hadoop/logs目录下查看namenode的log文件,里面会报错,指出来namenode里面的datanode对不上。 再回到current/version,将datanode的namespaceId修改和namenode一致即可。