Zookeeper踩坑记

还记得上一次配置Zookeeper是半年以前的事了,这半年一直没有改动Zookeeper的配置文件,直到实习回校,自己的集群没有,重新下载搭一个Zookeeper集群,使用的最新的Zookeeper 3.4.10,结果立马踩到了坑里面,搞了一两个小时才弄好。

  • 一配置Zookeeper
  • 二解决办法
  • 三分析原因

一、配置Zookeeper

我采用的是常见的配置。

数据目录:

/home/lee/data/zookeeper
分别配置了myid为

1,2,3

配置Zookeeper的配置文件

tickTime=2000
dataDir=/home/dengyiping/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=hadoop-1:2888:3888
server.2=hadoop-2:2888:3888
server.3=hadoop-3:2888:3888

然后start结果显示,怎么都连不上其他的两个节点。

二、解决办法

将当前节点的host改成0.0.0.0

tickTime=2000
dataDir=/home/dengyiping/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=0.0.0.0:2888:3888
server.2=hadoop-2:2888:3888
server.3=hadoop-3:2888:3888

三、分析原因

有人是这么说的

How have defined the ip of the local server in each node? If you have given the public ip, then the listener would have failed to connect to the port. You must specify 0.0.0.0 for the current node.

原来是非静态IP惹的祸。我的新集群是非静态IP的。
先看到我的hosts文件.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.36.8.138 hadoop-1
10.36.8.139 hadoop-2
10.36.8.140 hadoop-3

由于我并没有设置静态IP,因此 当寻找 当前的 域名时,找到的是 10.36.8.138 这个地址。

并不是本机地址

改成如下解决问题

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
0.0.0.0  hadoop-2

10.36.8.138 hadoop-1
10.36.8.140 hadoop-3
~                     

注意:如果设置的是静态IP则不会产生这个问题,因为查找域名时,会直接链接到本地网卡。

你可能感兴趣的:(大数据,hadoop,zookeeper,linux,zookeeper,数据,集群)