HA集群 执行 hdfs haadmin -transitionToActive 失败

最近把一个单NameNode集群变更为HA集群,过程中都很顺利,nn1和nn2两个NameNode都显示standby状态,但是把nn1或者nn2切换到active状态时就会报错抛异常。

查看master上namenode启动日志,如下:

Incompatible clusterID for journal Storage Directory /home/hadoop-zero/bigdata/dfs/journal/data/zero-cluster: NameNode has clusterId 'CID-e849213f-f50a-4380-9170-2c8f8c1a1e08' but storage has clusterId 'CID-8fd64df1-850a-4f4a-840b-162844c6dcb9'

分析一下,旧集群的clusterID和新集群的clusterID不同,引发问题。

查阅了很多相关文章,普遍思路是删除dfs.name目录下文件,然后格式化NameNode,个人不推荐这种方案。

我的解决办法:

先找到VERSION文件,我的在这个目录

/home/hadoop-zero/bigdata/dfs/journal/data/zero-cluster/current/VERSION

内容如下:

#Tue May 14 08:54:02 CST 2019
namespaceID=1887704894
clusterID=CID-8fd64df1-850a-4f4a-840b-162844c6dcb9
cTime=1557793501016
storageType=JOURNAL_NODE
layoutVersion=-63

结合启动日志,看到旧集群clusterID是CID-e849213f-f50a-4380-9170-2c8f8c1a1e08,而VERSION文件中的明显不是这个,日志中的异常就是这个问题造成的。

分别修改master、slave1和slave2的VERSION文件,把clusterID替换掉,比如我的:

注:更改clusterID即可,不要做其它更改!!!

#Tue May 14 08:54:02 CST 2019
namespaceID=1887704894
clusterID=CID-e849213f-f50a-4380-9170-2c8f8c1a1e08
cTime=1557793501016
storageType=JOURNAL_NODE
layoutVersion=-63

修改之后就可以重启集群了,试一下能否由standby切换到active

[hadoop-zero@master ~]$ hdfs haadmin -transitionToActive nn1
[hadoop-zero@master ~]$ hdfs haadmin -getServiceState nn1
active
[hadoop-zero@master ~]$ hdfs haadmin -getServiceState nn2
standby

搞定!!!

 

第一次写博客,写的很不美观,技术能力也有限,如果有错误请大家指出来,谢谢!

另,本人创建了一个QQ群,希望能够结识志趣相投之人,共同进步。

QQ群号码:565371162 欢迎加入

你可能感兴趣的:(故障)