ZooKeeper:java.io.IO异常:未找到快照,但有日志条目,有什么东西坏了

sd2nnvve  于 2022-09-21  发布在  Zookeeper
关注(0)|答案(9)|浏览(405)

我一直在使用Kafka 2.4.0(2.11),昨天由于未知的原因,我不得不强制终止该进程。从那以后,我再也没有因为以下错误而无法启动ZooKeeper:

[2020-01-11 11:12:43,783] ERROR Unexpected exception, exiting abnormally (org.apache.zookeeper.server.ZooKeeperServerMain)
java.io.IOException: No snapshot found, but there are log entries. Something is broken!
    at org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:222)
    at org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:240)
    at org.apache.zookeeper.server.ZooKeeperServer.loadData(ZooKeeperServer.java:290)
    at org.apache.zookeeper.server.ZooKeeperServer.startdata(ZooKeeperServer.java:450)
    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:144)
    at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:106)
    at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:64)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:128)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)

当我搜索此问题时,我发现报告了问题ZOOKEEPER-3513,这可能解释了问题,也可能解释不了问题。然而,我发现奇怪的是,如果我删除Kafka/ZooKeeper目录并从头重新下载它,问题仍然存在。有人知道我怎么才能解决这个问题吗?

谢谢你的帮助

xdnvmnnf

xdnvmnnf1#

检查您有Kafka文件夹的驱动器上的tMP/zooKeeper文件夹(假设为D:/),并删除文件夹tMP,一旦再次运行ZooKeeper,它将自动为您创建。

zrfyljdw

zrfyljdw2#

尝试更改您的ZooKeeper数据目录。您的ZooKeeper.properties中定义了ZooKeeper数据目录(我认为缺省值是/tMP/zooKeeper)。

也许您没有删除正确的ZooKeeper目录?

我也遇到了同样的问题,这个解决方案奏效了。

注:我正在试验Kafka,而不是在生产中使用它。除了修复这个错误之外,我不知道上面还有什么功能……

i1icjdpr

i1icjdpr3#

在从3.4.x版升级到3.5.6版后,我在ZooKeeper上遇到了同样的问题。如here所述。我已经:

1.在数据目录中添加了空的Snaphot.0文件
1.在ZooKeeper配置文件(默认为zoo.cfg)中添加了属性‘zookeeper.Snaphot.trust.Empty=true’。

vxf3dgd4

vxf3dgd44#

Windows->

转到存储ZooKeeper详细信息的临时文件夹并删除现有日志文件

目录路径=d:\TMP\zooKeeper\Version-2

Linux上->

路径=/tmp/zooKeeper/版本2

并使用rm-r log.1删除所有现有日志文件

日志文件将再次自动创建,并将解决该问题。

68de4m5k

68de4m5k5#

如果你是在Windows上,确保你避开了ZooKeeper临时目录的位置。

DataDir=d:\TMP\ZooKeeper

eufgjt7s

eufgjt7s6#

为日志创建了一个新目录,并在zoo.cfg中配置了相同的路径。它奏效了:)

kkih6yb8

kkih6yb87#

我使用MacOS,我的解决方案是删除dataDir中的所有内容,缺省值应该是/usr/local/var/lib/zookeeper

rjzwgtxy

rjzwgtxy8#

对于那些正在使用docker的人,我将分享我的经验:

我一直在运行ZooKeeper confluentinc/cp-zooKeeper:5.2.1,如下所示:

docker run 
    --network kafka-net --name=zookeeper 
    -e ALLOW_ANONYMOUS_LOGIN=yes 
    -e ZOOKEEPER_CLIENT_PORT=2181 
    -v /tmp/zookeeper-data:/var/lib/zookeeper/data 
    -v /tmp/zookeeper-txn-logs:/var/lib/zookeeper/log 
    -p 2181:2182 confluentinc/cp-zookeeper:5.2.1

不出所料,我可以看到一些文件放置在主机上的/tmp/zookeeper-txn-logs/tmp/zookeeper-data中。在清理*/tMP/zooKeeper-data并再次运行后,我收到错误找不到快照,但有日志条目。*

在我的例子中,我只需清除/tmp/zookeeper-txn-logs上的数据。对于开发/生产环境,我建议遵循文档https://access.redhat.com/documentation/en-us/red_hat_amq/6.3/html/fabric_guide/ensemble-purgetxnlog

snvhrwxg

snvhrwxg9#

在MacOS中遇到同样的问题。解决方案:在Kafka目录中,路径cd /tmp/zookeeper/version-2删除了log.1文件。这对我很管用

相关问题