由于 java.io.EOFException,导致会话 0x0 关闭的异常导致无法启动 Zookeeper

Cannot start Zookeeper due to: Exception causing close of session 0x0 due to java.io.EOFException

我正在尝试使用以下命令通过 CLI 启动 Zookeeper:

bin/zookeeper-server-start.sh ../config/zookeeper.properties

它嗡嗡作响了一秒钟,似乎一切都是正确的,直到它说出以下内容:

INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory)

然后下面无限循环直到我退出:

 [2018-08-10 15:07:48,223] INFO Accepted socket connection from /172.31.39.32:46374 (org.apache.zookeeper.server.NIOServerCnxnFactory)
    [2018-08-10 15:07:48,228] WARN Exception causing close of session 0x0 due to java.io.IOException: ZooKeeperServer not running (org.apache.zookeeper.server.NIOServerCnxn)
    [2018-08-10 15:07:48,228] INFO Closed socket connection for client /172.31.39.32:46374 (no session established for client) (org.apache.zookeeper.server.NIOServerCnxn)

这是一个单服务器,我相信是一个单节点测试服务器,所以没有仲裁或其他部分 运行。我的动物园管理员配置是基本的,它只包含这个:

dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0

奇怪的是,我的 zookeeper 运行 很好,而且我没有对配置进行任何更改。将其拉下以尝试修复其他问题以在动物园管理员上快速重启,但它不会让步。我已经检查过了,2181 端口上没有其他 运行。

我看到这个问题已经问了好几次都没有答案,有什么想法吗?

发生这种情况的原因可能是动物园管理员数据发生了一些损坏。您不应将 dataDir 设置为 /tmp/*。如果你的电脑清除了/tmp 的一些数据,zookeeper 重启后将很难恢复状态。如果你检查 zookeeper 日志,你应该在那里看到某种异常。

既然你提到这个 zookeeper 实例仅用于测试目的。你应该设置 dataDir 除了 /tmp 之外的任何内容,然后尝试重新启动。