关于Zookeeper一个小问题

最近在centos7上安装zookeeper的过程中出现一个让人很迷惑的小问题,这里分享一下。

集群配置文件:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/hadoop/app/zookeeper/data
dataLogDir=/home/hadoop/app/zookeeper/logs

clientPort=2181

server.1=192.168.85.130:2888:3888
server.2=192.168.85.140:2888:3888
server.3=192.168.85.150:2888:3888

环境变量增加了ZOOKEEPER_HOME及其bin

之后执行

[hadoop@hadoop1 conf]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop1 conf]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.

出现了一个Error?这是怎么回事

查看了一下日志:

[hadoop@hadoop1 logs]$ tail -100f zookeeper-hadoop-server-hadoop1.out 
2019-09-29 11:07:17,335 [myid:1] - WARN  [QuorumPeer[myid=1](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumCnxManager@677] - Cannot open channel to 2 at election address /192.168.85.140:3888
java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:648)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:705)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:733)
        at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:910)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:1247)
2019-09-29 11:07:17,341 [myid:1] - WARN  [QuorumPeer[myid=1](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumCnxManager@677] - Cannot open channel to 3 at election address /192.168.85.150:3888
java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:648)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:705)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:733)
        at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:910)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:1247)

WTF?什么情况!!!!

然后看看网友怎样解决:

(1)网友甲说,防火墙没关,对不起我早就关了,而且关了selinux,该策略pass掉

附上关闭防火墙,及selinux
systemctl stop firewalld
systemctl disabled firewalld
这个一般需要再开启才生效,当然关闭防火墙基本就不影响了
vi /etc/selinux/config
SELINUX=disabled
setenforce 0

(2)网友乙说,时间要同步,zookeeper对时间很敏感,对不起我也早设置时间了

附上我之前的时间同步
yum install nptdate
ntpdate time.ntp.org

(3)网友丙说,是因为你hosts文件没有注释掉127.0.0.1路径,对不起我再安装hadoop的时候就已经搞定了

附上hosts文件修改
vim /etc/hosts
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.85.130  hadoop1
192.168.85.140  hadoop2
192.168.85.150  hadoop3

然后怎么办,网友的办法都试过了。我又自己查看了网卡,查找配置文件是否配置有问题。

第一个结点就那样报错放着,我想试试第二台第三台启动有没有问题,然后奇迹就出现了!!!!!

当三台都启动之后!!!错误消失了

ZooKeeper JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

所以错误就是因为在启动一台的时候查找其他节点,旧版本会显示一个状态表示在等待,而新版本这部分还没有优化好,会出现一个抛异常等待的过程,当然看源码的大佬可以修改下源码,让这部分加上try catch就OK了。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值