360SDN.COM

安装zookeeper时候,状态显示报错:Error contacting service

来源:  2019-02-27 13:48:32    评论:0点击:

安装zookeeper时候,可以查看进程启动,但是状态显示报错:Error contacting service. It is probably not running
安装zookeeper-3.3.2的时候,启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下:
 
JMX enabled by default
Using config: /hadoop/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
 
jps查看进程,却发现进程已启动
 
7313  QuorumPeerMain
 
 
 
在网上查阅资料一共有三种解决方法:
 
1,打开zkServer.sh 找到status)
 
STAT=`echo stat | nc localhost $(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode`
在nc与localhost之间加上 -q 1 (是数字1而不是字母l)
如果已存在则去掉
注:因为我用的zookeeper是3.4.5版本,所以在我的zkServer.sh脚本文件里根本没有这一行,所以没有生效
 
2,调用sh zkServer.sh status 遇到这个问题。百度,google了后发现有人是修改sh脚本里的一个nc的参数来解决,可在3.4.5的sh文件里并没有找到nc的调用。配置文档里指定的log目录没有创建导致出错,手动增加目录后重启,问题解决。
注:我试了下,问题解决,我用的zookeeper是3.4.5版本
 
zkServer.sh中:
 
status)
    # -q is necessary on some versions of linux where nc returns too quickly, and no stat result is output
    STAT=`$JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
             -cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain localhost \
             $(grep "^[[:space:]]*clientPort" "$ZOOCFG" | sed -e 's/.*=//') srvr 2> /dev/null    \
          | grep Mode`
 
 
 
解决:1)修改 zoo.cfg 配置文件
#zookeeper-3.4.6_(1)的配置(/usr/local/zookeeper-3.4.6_(1)/conf/zoo.cfg)如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.6_(1)/data
dataLogDir=/usr/local/zookeeper-3.4.6_(1)/logs
clientPort=2181
server.1=192.168.11.97:2881:3881
server.2=192.168.11.98:2882:3882
server.3=192.168.11.99:2883:3883
 
2)在zookeeper安装路径下/usr/local/zookeeper-3.4.6_(1),创建一个文件夹logs
 
3,创建数据目录,也就是在你zoo.cfg配置文件里dataDir指定的那个目录下创建myid文件,并且指定id,改id为你zoo.cfg文件中server.1=localhost:2888:3888中的    1.只要在myid头部写入1即可.
 
 
4 因为防火墙没有关闭。关闭防火墙:
 
  #查看防火墙状态
 
   service iptables status 
 
  #关闭防火墙
   service iptables stop
  #查看防火墙开机启动状态
   chkconfig iptables --list
  #关闭防火墙开机启动
   chkconfig iptables off
 
 注意:我的确在开始时候没有关闭防火墙,但是当我关闭防火墙之后也没有解决问题。
 
5 没有建立主机和ip之间的映射关系。
 
  建立主机和ip之间映射关系的命令为 vim /etc/hosts   在文件的末端加入各个主机和ip地址之间的映射关系就可以了。
 
  注意:只有在建立了映射关系之后,才可以将在同一个网段下的机器利用主机名进行文件传递。问题解决!
 
原文:https://blog.csdn.net/haihongazar/article/details/52622095  
为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权