概述
解决Zookeeper启动报错The current epoch, 5, is older than the last zxid, 30064771074
问题描述
在CDH启动Zookeeper时遇到如下问题:
Reading snapshot /usr/local/zk/data/version-2/snapshot.800000003
2019-12-09 23:16:41,955 [myid:1] - ERROR [main:QuorumPeer@453] - Unable to load database on disk
java.io.IOException: The current epoch, 5, is older than the last zxid, 30064771074
at org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:435)
at org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:409)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:156)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
2019-12-09 23:16:41,966 [myid:1] - ERROR [main:QuorumPeerMain@94] - Unexpected exception, exiting abnormally
java.lang.RuntimeException: Unable to run quorum server
at org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:454)
at org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:409)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:156)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
Caused by: java.io.IOException: The current epoch, 8, is older than the last zxid, 38654705667
at org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:435)
... 4 more
这里,意思是说当前的阶段比最新的阶段(zxid为30064771074)要老。
换句话说,即此节点上的Zookeeper
所处阶段与当前ClouderaManager中Zookeeper
的阶段不匹配
,导致无法启动此节点上面的Zookeeper Quorum Server
。
解决方法
既然版本不匹配,那么,我们选择删除的是问题节点上的版本数据,即删除/data/zookeeper/data/
下的version-2
文件夹下的所有东西:
yeluo @ slave2 in ~ [23:33:06]
$ sudo rm -r /data/zookeeper/data/version-2/*
注意:
- 不要删除
version-2
文件夹,否则可能会报错no space left on device
。
如果误删,请参考ZooKeeper报错:Unable to access datadir, exiting abnormally - 不要删除
myid
。
如果误删,请先删除此Slave2
的Zookeeper server
,然后将/data/zookeeper/data/
目录删除,再重新给Slave2
添加Zookeeper Server