问题①
在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format)。然后再启动发现一个DataNode都没有启动
排除
查看日志发现
java.io.IOException:Incompatible clusterIDs in /home/storm/hadoop/dfs/data: namenode clusterID XXXX
日志上看,datanode的clusterID 和 namenode的clusterID 不匹配。
出现该问题的原因
在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。datanode 和namenode 集群id不匹配
需要改为一致
解决
那思路就很简单了,将NameNode的Cluster ID复制到所有的DataNode即可,VERSION 文件保存Cluster ID等节点信息。我们先find 找到对应的VERSION文件路径,记得先关闭Hadoop!
- find / -iname “VERSION”
我的VERSION文件路径是/opt/hadoopdata/dfs/data/current/VERSION - 把NameNode的Cluster ID复制到所有DataNode
我的node1是NameNode,其他节点都是DataNode,保证所有DataNode的Cluster ID都是和NameNode一致即可
问题②
node4是node3复制过来的(我在4台虚拟机搭的伪分布式Hadoop),
但是DataNode不会同时显示node3和node4,反复刷新网页会随机显示~
排除
能刷出来说明配置正常,那就是VERSION文件的datanodeUuid配置问题了。
解决
-
find / -iname “VERSION”
我的VERSION文件路径是/opt/hadoopdata/dfs/data/current/VERSION -
把datanodeUuid随便改个把字母保证和其他DataNode不一样即可
顺利解决!