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

Nat*_*H06 2 apache-kafka apache-zookeeper

我正在尝试使用以下命令通过 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)
Run Code Online (Sandbox Code Playgroud)

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

 [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)
Run Code Online (Sandbox Code Playgroud)

这是一台服务器,我相信是一台单节点测试服务器,因此没有法定人数或其他部分正在运行。我的动物园管理员配置是基本的,它只包含以下内容:

dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

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

既然您提到这个 Zookeeper 实例仅用于测试目的。您应该设置 dataDir为除此以外的任何值/tmp,然后尝试重新启动。