问题产生的原因:
格式化NameNode,会产生一个集群id,启动DataNode时,会产生一个相同的id
如果多次初始化NameNode,会导致NameNode和DataNode的id不一致,集群找不到之前的数据
从而出现start-all.sh
的时候DataNode无法正常启动,或者两个只要启动其中一个,另一个就会挂掉的情况
找到tmp路径:
首先进入自己的Hadoop目录下
cd etc/hadoop
打开配置文件
vi core-site.xml
记下tmp目录的路径地址
进入tmp下的dfs目录,两个id分别存放在对应的目录下
查看NameNode的id:
查看name目录下的current目录下的VERSION文件
cat name/current/VERSION
这里可以显示NameNode的id
clusterID=CID-8d8cddfb-06da-48a4-a7cc-ecde089873f6
查看DataNode的id:
查看data目录下的current目录下的VERSION文件
cat data/current/VERSION
这里可以显示DataNode的id
clusterID=CID-8d8cddfb-06da-48a4-a7cc-ecde089873f6
正常情况应该是一样的
如果不一样
问题解决方法:
1、将NameNode中的id修改为与DataNode一致
2、直接删除tmp目录再重新初始化集群(推荐
)
注意:
以后如果需要重新初始化NameNode,记得删除tmp目录