解决ZooKeeper报错:java.io.IOException: No snapshot found, but there are log entries. Something is broken!

大数据技术 潘老师 3年前 (2021-04-26) 5283 ℃ (1) 扫码查看

今天有几个同学的ZooKeeper环境在启动时虽然显示Started,但是在查看status时却提示not running,经过查看logs日志发现,启动时发生了异常如下:

java.io.IOException: No snapshot found, but there are log entries. Something is broken!
    at org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:240)
    at org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:240)
    at org.apache.zookeeper.server.ZooKeeperServer.loadData(ZooKeeperServer.java:305)
    at org.apache.zookeeper.server.ZooKeeperServer.startdata(ZooKeeperServer.java:465)
    at org.apache.zookeeper.server.NIOServerCnxnFactory.startup(NIOServerCnxnFactory.java:764)
    at org.apache.zookeeper.server.ServerCnxnFactory.startup(ServerCnxnFactory.java:98)
    at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:145)
    at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:107)
    at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:65)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:128)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)

网上看了不少解决方案,其中一种是要修改zoo.cfg配置文件中的dataDir对应的路径,换成别的目录,试了下,启动还是报错,后来重新看了下报错信息,重点在于No snapshot found, but there are log entries. Something is broken!这句提示,翻译下大概意思就是:找不到快照,但有日志记录,有文件损坏了!

解决办法:

方法1:如果你的数据文件不重要,可以直接将dataDir配置指定的目录和dataLogDir配置指定的日志目录直接强制递归删除,然后重新启动就可以!
解决ZooKeeper报错:java.io.IOException: No snapshot found, but there are log entries. Something is broken!
方法2:直接重新安装部署ZK

目前还没有找到了产生此问题的具体原因,猜测可能是因为系统突然宕机,导致ZK服务器关闭不当导致文件损坏的,也没有找到能够保留元数据情况下解决此问题的办法,如果有这样的方法,还请评论留言告知哦!


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/bigdata/3078.html
喜欢 (10)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】

(1) 个小伙伴在畅所欲言
  1. 用户头像
    1
    1 2022-09-13 12:38 回复