【问题标题】:ZooKeeper start successfully but doesn't workZooKeeper 启动成功但不起作用
【发布时间】:2015-08-06 05:28:10
【问题描述】:

我正在尝试使用三个节点以完全分布式模式部署 zookeeper 集合。启动服务器后,jps 下没有条目。在给出“zkServer.sh 状态”时,输出为:

    JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running

在给出命令“zkCli.sh -server zks1:2181”时:

Connecting to zks1:2181
2015-05-24 23:02:24,602 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2015-05-24 23:02:24,605 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=mtech2-OptiPlex-7010
2015-05-24 23:02:24,606 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.7.0_79
2015-05-24 23:02:24,607 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2015-05-24 23:02:24,607 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-7-openjdk-amd64/jre
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.6.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf:
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.75
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=hduser
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/home/hduser
2015-05-24 23:02:24,608 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper
2015-05-24 23:02:24,609 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=zks1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@634fd55e
Welcome to ZooKeeper!
2015-05-24 23:02:24,741 [myid:] - INFO  [main-SendThread(zks1:2181):ClientCnxn$SendThread@975] - Opening socket connection to server zks1/192.168.4.60:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2015-05-24 23:02:24,755 [myid:] - WARN  [main-SendThread(zks1:2181):ClientCnxn$SendThread@1102] - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
[zk: zks1:2181(CONNECTING) 0]

所有节点的 /etc/hosts 文件如下:

    192.168.4.60    zks1
    192.168.4.61    zks2
    192.168.4.66    zks3

zoo.cfg文件如下:

    dataDir=/var/zookeeper/                                                                    
    clientPort=2181
    initLimit=5
    syncLimit=2
    server.server1=zks1:2888:3888                                
    server.server2=zks2:2888:3888
    server.server3=zks3:2888:3888

我已在所有节点上创建目录 /var/zookeeper 并将所有权更改为 hduser:hadoop。

导出的环境变量为:

    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
    export ZK_HOME=/usr/local/zookeeper
    export PATH=$PATH:$ZK_HOME/bin

数据目录(/var/zookeeper/)中的myid分别是server1、server2和server3。

请指出问题。

【问题讨论】:

  • 您是否尝试在同一台机器上运行多个服务器?
  • 不,我在多台机器上运行。我找到了解决方案。用 server.1 替换 server.server1 并相应地修改每个节点的 myid 文件就可以了。

标签: java hadoop hbase apache-zookeeper apache-kafka


【解决方案1】:

用 server.1 替换 server.server1 并相应地修改每个节点的 myid 文件就可以了。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。在我的情况下,问题是每个节点的 Zookeeper 位置配置不同,因此 Zookeeper 无法提供 Quorum,并且提到的节点不能成为集群的一部分。

    请确保每个节点的服务器定义相同。

    server.server1=zks1:2888:3888                                
    server.server2=zks2:2888:3888
    server.server3=zks3:2888:3888
    

    【讨论】:

      【解决方案3】:

      在第一个/顶部堆栈跟踪中,myid 值存在问题。

      “2015-05-24 23:02:24,602 [myid:] - INFO [main:Environment@100]” 在上面的行中,myid:* 这里应该是一个整数/长整数。所以可能你还没有在 dataDir 文件夹中创建你的 myid 文件,或者你没有输入任何 long/int 值。myid 应该是文件类型。

      在第二个问题中,在 server.server1=machine:port1:port2 中,因为 server1 不是很长,所以 org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties() 方法会抛出 NumberFormatException。 所以 server.1 应该是一个数字,在 ensemble 中是唯一的,并且应该在 myid 文件中。

      【讨论】:

        猜你喜欢
        • 2020-03-26
        • 2016-03-27
        • 1970-01-01
        • 2012-09-12
        • 2015-08-26
        • 1970-01-01
        • 2016-10-31
        • 1970-01-01
        • 2021-06-22
        相关资源
        最近更新 更多