出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
解决方案1:打开core-site.xml文件,查看指定hadoop运行时产生文件的存储目录 ,每次namenode初始化后的数据存在这个目录里。我的是:/home/hadoop/tmp,
使用如下命令删除tmp目录下的所有文件
rm -rf /home/hadoop/temp
然后重新格式化:hadoop namenode -format
重新启动集群即可
注意:如果你删除tmp目录下的所有文件,也就意味你的元数据文件存储目录data也会被删除,结果就是HFDS上的所有数据都丢失了,如果只是想重启namenode,只要删除tmp下的namenode目录即可
解决方案2:
如果有数据还在,又不想清空数据,那么就用这个方案。
既然是版本号不一致产生的问题,那么我们就单独解决版本号的问题,将你格式化之后的NameNode的VERSION文件找到,然后将里面的clusterID进行复制,再找到DataNode的VERSION文件,将里面的clusterID进行替换,保存之后重启,那么就可以正常的使用了。
那这个version文件在哪呢,就在hadoop运行时产生文件的存储目录里,看图