datanode或者namenode无法启动

问题描述


起初问题是datanode无法启动,查看datanode中/home/zkpk/Software/hadoop-2.4.0/logs的datanode日志发现问题是cluster ID不一致导致的。
datanode或者namenode无法启动

网上的解决方法有修改datanode的clusterID与namenode的clusterID一致或者直接删除datanode的VERSION两种方法。

由于没搞清楚几个VERSION的区别,随便找到一个删了就觉得可以了,在slave节点的hadoopdata/dfs/name/current下面没有找到VERSION,但是在master节点的hadoopdata/dfs/name/current下面找到了VERSION,于是删除之,重新格式化namenode并重启集群,结果slave节点中的datanode出现了,但是master节点中的namenode没了。

查看master中/home/zkpk/Software/hadoop-2.4.0/logs的namenode日志,
datanode或者namenode无法启动

然而在启动之前明明格式化了那namenode,所以是怎么回事呢?

现在datanode启动成功说明不存在ID不一致的问题了,那么namenode无法启动会不会是因为删错了东西。
经过调查发现果然如此,应该删除的是datanode的/home/zkpk/hadoopdata/dfs/data/current目录下的VERSION,因为开始在图形界面打开该目录无法显示,所以没有找到该VERSION。应该在root权限下进入该目录删除VERSION。

原因很简单,集群启动namenode需要从master的/home/zkpk/hadoopdata/dfs/name/current中找到VERSION获取集群ID,若删除该文件则找不到clusterID所以无法启动namenode,而且因为没有了namenode的clusterID,因此datanode启动时不存在datanodeID和namenodeID不匹配的问题,因此datanode成功启动。
总结:应该删除的slave节点的/home/zkpk/hadoopdata/dfs/data/current下的VERSION,不能删除master节点的/home/zkpk/hadoopdata/dfs/name/current下的VERSION。