【问题标题】:Zookeeper: java.io.IOException: No snapshot found, but there are log entries. Something is brokenZookeeper:java.io.IOException:未找到快照,但有日志条目。东西坏了
【发布时间】:2020-04-28 20:05:13
【问题描述】:

我一直在与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 目录并从头开始重新下载,问题仍然存在。有谁知道我该如何解决这个问题?

感谢您的帮助

【问题讨论】:

  • 您不需要重新下载任何东西。在这些数据目录之外没有存储任何状态
  • 目录 /tmp/zookeeper 呢?
  • 那不是dataDir吗?此外,您不应该将数据存储在 /tmp 上
  • 您是否尝试过使用issues.apache.org/jira/browse/ZOOKEEPER-3056 中描述的snapshot.0 文件的解决方法?

标签: apache-kafka apache-zookeeper


【解决方案1】:

尝试更改您的 zookeeper 数据目录。 你的 zookeeper 数据目录在 zookeeper.properties 中定义(我认为默认是 /tmp/zookeeper)。

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

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

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

【讨论】:

    【解决方案2】:

    如果您在 Windows 上,请确保您转义了 zookeeper 临时目录的位置。

    dataDir=d:\tmp\zookeeper

    【讨论】:

    • 如果您不确定要回答问题的任何信息,您应该通过 cmets 询问他们。
    【解决方案3】:

    检查您有 kafka 文件夹的驱动器上的 tmp/zookeeper 文件夹(比如说 D:/),并删除文件夹 tmp,一旦再次运行 zookeeper,它将自动为您创建.

    【讨论】:

    • 这对我有用,在我使用的 Linux 中:rm -rf /tmp/zookeeper/*
    • 我还必须删除代理文件才能使其正常工作。从 /tmp 文件夹中删除了代理文件。
    【解决方案4】:

    从版本 3.4.x 更新到 3.5.6 后,我在 Zookeeper 上遇到了同样的问题。如here 所述。我已经:

    1. 在数据目录中添加了空的 snapshot.0 文件
    2. 在 Zookeeper 配置文件中添加了一个属性“zookeeper.snapshot.trust.empty=true”(默认为 zoo.cfg)

    【讨论】:

    • 对我来说,它不适用于空的snapshot.0,但在您发布的链接中附加了一个。 +1 不过,这就是解决方法。
    • 从给定的链接下载sanpshot.0并将其粘贴到dataDir。现在,问题是数据目录到底存在哪里?我使用的是 mac,对我来说,dataDir 位于/usr/local/var/run/zookeeper/data/version-2。您可以在 zookeeper 配置文件 (zoo.cfg) 中检查您的 dataDir。只需将version-x 添加到此dataDir。请仔细阅读this评论。
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        对于使用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 并再次运行后,我收到错误 No snapshot found, but there are log entries。

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

        【讨论】:

          【解决方案8】:

          Windows ->

          转到存储zookeeper详细信息的tmp文件夹 并删除现有的日志文件

          目录路径 = d:\tmp\zookeeper\version-2


          Linux ->

          路径 = /tmp/zookeeper/version-2

          并使用 rm -r log.1

          删除所有现有的日志文件

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


          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-18
            • 1970-01-01
            • 1970-01-01
            • 2021-01-13
            • 1970-01-01
            • 1970-01-01
            • 2020-05-01
            相关资源
            最近更新 更多