Zookeeper问题集

企业动态
今天讲一讲关于Zookeeper的问题、原因以及解决方法。

1.启动zookeeper后出现noClassFound等等错误,例如:

  1. Exception in thread "main" java.lang.NoSuchMethodError: method java.lang.management.ManagementFactory.getPlatformMBeanServer with signature ()Ljavax.management.MBeanServer; was not found. 
  2.     at org.apache.zookeeper.jmx.ManagedUtil.registerLog4jMBeans(ManagedUtil.java:48) 
  3.     at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:114) 
  4.     at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:103) 
  5.     at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:7 

可能原因是该服务器的jdk版本不正确,或是环境变量未设置好。

例如,原来的linux下已经装有jdk-1.4,然后又安装了新版本的jdk-1.6,我们按照网上教程的步骤安装好zookeeper并设置环境变量后,

echo $JAVA_HOME显示java-1.6,

但是用java -version命令发现,仍然显示java-1.4,说明环境变量未配好。zookeeper读取的jdk版本仍然是旧版本的jdk-1.4。

解决方法是在/etc/bashrc文件的末尾,

  1. export JAVA_HOME=/usr/java/jdk1.6.0_23 
  2. export JRE_HOME=$JAVA_HOME/jre 
  3. export PATH=$JAVA_HOME/bin:$PATH 
  4. //这里要注意,应该将$PATH放在尾部而不是放在头部,网上有安装教程写的是$PATH :$JAVA_HOME/bin,这样zookeeper读取的将是$PATH中的jdk旧版本而出错。 
  5. export CLASSPATH=.:$JAVA_HOME/lib/*.jar 

2.当一台或某台机器反复出现cannot open channel to xxxx:2888/3888,报错(例如无法与leader进行同步等等错误),无法完成选举(这个错误以前一直有出现,但是时有时无,不知道为什么)。

[[178933]]

可能原因是防火墙开启,导致某台机器的端口不能开启,一般是2888不能开启。linux下的很多分布式应用会要求关闭防火墙。。。所以还是干脆关闭算了。今天把防火墙直接关闭后zookeeper启动正常。

用命令service iptables status查看,显示一系列消息,表示防火墙处于开启状态;可以用service iptables stop关闭防火墙。但是这个只是临时关闭防火墙。

要使系统启动时不自动启动防火墙,则可以使用命令chkconfig –list iptables查看防火墙信息,chkconfig iptables off关闭防火墙。以后若要打开,用chkconfig iptables on命令。

ps今天早上来看发现防火墙又开启了,貌似不管用。还是用以下三条命令关闭。

  1. chkconfig --level 35 iptables off 
  2. /etc/init.d/iptables stop 
  3. iptables -P INPUT DROP 

3. Zookeeper能够正常启动,但是显示如下错误:

  1. Starting zookeeper… 
  2. ./zkServer.sh: line 80: /home /sysdata/zookeeper/zookeeper-data/zookeeper_server.pid: No such file or directory 
  3. STARTED 

在配置文件zoo.cfg文件中指定了zookeeper启动的pid文件的生成位置:dataDir=/home /sysdata/zookeeper/zookeeper-data,但是我们发现该pid并没有生成。而且想要停止zookeeper显然也不能成功:

  1. Stopping zookeeper ... 
  2. error: could not find file /zookeeper_server.pid。 

请教大牛之后,这个让我头疼很久的问题,终于解决了。。。

原来是我的zoo.cfg文件中的给dataDir路径赋值前多了一个空格!zookeeper在读取此配置文件时会把空格也读进文件名(脚本咋这不智能呢),将此空格删去后zookeeper启动、关闭就正常了!

转载:http://www.aboutyun.com/thread-7483-1-1.html

4、Zookeeper:“Error contacting service. It is probably not running.”

问题:

Zookeeper配置集群后,启动会报“Error contacting service. It is probably not running.”

原因:

1、上一次启动时port被占用

  1. [root@test58 bin]# netstat -ptnl |grep 2181 
  2. tcp 0 0 :::2181 :::* LISTEN 9907/java 

2、只启动了一台zk,没办法形成集群

3、集群之间的节点通信不了

解决:

  • 杀死已经存在的进程
  • 启动集群的其他机器
  • 查找不能通信的原因(防火墙,zk配置文件等)

5、zookeeper的API报错问题

问题:

  1. KeeperErrorCode=ConnectionLoss for /servers 

原因:

api中连接zookeeper的时候使用的ip,如:192.168.111.111,而不是域名,如:zk1,在大数据生态圈的api中,对ip的支持并不是很好,所以一般建议使用域名,使用ip会出现奇怪的bug。

解决:

将ip修改为域名

【本文为51CTO专栏作者“王森丰”的原创稿件,转载请注明出处】

责任编辑:赵宁宁 来源: 神算子
相关推荐

2016-12-14 15:59:31

HBase分布式数据

2016-12-19 19:04:30

Hive问题集

2016-12-19 15:32:12

Linux问题集

2016-12-13 16:36:15

Hadoopwindows

2011-03-28 17:51:10

nagios

2013-11-22 09:57:03

hadoop1.2.1zookeeper-3hbase-0.94.

2010-03-25 16:20:44

CentOS安装

2011-02-22 14:21:49

vsftpd

2009-10-09 17:40:38

VB.Net问题集

2018-07-12 09:25:07

磁盘阵列数据恢复

2011-02-25 14:25:04

Proftpd

2011-02-22 14:40:25

vsftpd

2020-10-27 11:50:53

运维Zookeeper脑裂

2019-11-29 11:12:56

Zookeeper脑裂选举算法

2009-12-31 15:28:02

Silverlight

2009-07-01 00:23:40

MySQL字符集乱码

2011-03-03 13:41:36

Pureftpd防火墙

2011-05-16 13:15:55

MySQL存储字符集

2011-03-03 14:26:15

PureftpdSSHFTP

2022-09-02 08:33:23

ZooKeeper分布式
点赞
收藏

51CTO技术栈公众号