我是在刚搭建好HDFS高可用后,发现存在一台NamNode节点无法启动,但该节点上的DataNode仍可正常运行。其它的NameNode在正常运行。
问题可能是由多个NameNode上的元数据信息不一致,解决方法如下:
1、停止HDFS集群。
2、删除每个NameNode节点上的data、logs。(我是在刚搭好HDFS集群遇到的这个问题,所有data和logs中的数据可直接删除。如果data和logs中存在重要的不能删除的数据,还请将数据迁移保存至别处,或使用其它方法进行解决)。
3、在每一个JournalNode节点上,输入以下命令启动journalnode服务。(我是在每一台NameNode上启动的)。
hdfs --daemon start journalnode
4、在一个NameNode节点上,对其进行格式化,并启动。
//格式化
hdfs namenode -format
//启动namenode
hdfs --daemon start namenode
5、在其它每一个NameNode节点上执行下面这句话,同步<第4步那个NameNode节点>的元数据信息。
hdfs namenode -bootstrapStandby
6、其它NameNode节点都去执行下面这句话启动NameNode——除<第4步那个NameNode节点>。
hdfs --daemon start namenode
然后通过jps就可以查看NameNode已经启动了。