HDFS HA 的两个NameNode 都是备用状态,怎么解决?
方法:
重启,不管用。。。。。。
查看日志,/var/log/ 里面的NameNode 日志,发现有这么一段
java.lang.IllegalArgumentException:
Unable to determine service address for namenode 'namenode87'
我们继续到配置文件中找namenode名称,发现两个namenode的名字分别是 namenode108 and namenode139
<name>dfs.ha.namenodes.ns1</name>
<value>namenode108,namenode139</value>
所以我们就找到了问题所在, namenode id 不一致。
网上解决方法有重新格式化ZKFC,
sudo -u hdfs hdfs zkfc -formatZK
格式化以后,在Zookeeper client 中,我们看到在 hadoop-ha 目录中,增加了部分文件。
终端中输入 zookeeper-client 命令进入客户端
[zk: localhost:2181(CONNECTED) 8] ls /hadoop-ha/ns1
[ActiveBreadCrumb, ActiveStandbyElectorLock]
[zk: localhost:2181(CONNECTED) 10] get /hadoop-ha/ns1/ActiveBreadCrumb
ns1
namenode108node1.ecreditpal.local �>(�>
cZxid = 0x16000094e7
ctime = Tue Feb 25 16:32:51 CST 2020
mZxid = 0x16000094e7
mtime = Tue Feb 25 16:32:51 CST 2020
pZxid = 0x16000094e7
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 48
numChildren = 0
[zk: localhost:2181(CONNECTED) 11] get /hadoop-ha/ns1/ActiveStandbyElectorLock
ns1
namenode108node1.ecreditpal.local �>(�>
cZxid = 0x16000094e6
ctime = Tue Feb 25 16:32:51 CST 2020
mZxid = 0x16000094e6
mtime = Tue Feb 25 16:32:51 CST 2020
pZxid = 0x16000094e6
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x2707ae8de840fe3
dataLength = 48
numChildren = 0
[zk: localhost:2181(CONNECTED) 12]
在格式化之前是没有ActiveStandbyElectorLock文件的。
最后问题解决了。。。
但是为什么好好的zk 就不行了呢,纳闷。