zookeeper安装

jopen 9年前

用户为hadoop,安装目录为/opt/app下面

上传安装文件到/opt下面

root用户解压
[root@master opt]$ tar -zxvf zookeeper-3.4.7.tar.gz -C /opt/app/

修改用户及属组

[root@master opt]# chown -R hadoop:hadoop zookeeper-3.4.7

创建数据文件夹并修改属组(并在slave01和slave02上同样创建)

mkdir /home/hadoop/app/zookeeper-3.4.7/tmp

chown -R hadoop:hadoop /home/hadoop/app/zookeeper-3.4.7/tmp



切换用户并修改文件zoo.cfg

su – hadoop

mv zoo_sample.cfg  zoo.cfg

#修改数据文件夹自定

dataDir=/home/hadoop/app/zookeeper-3.4.7/tmp 

#添加服务器

server.1=master:2888:3888 

server.2=slave01:2889:3889

server.3=slave02:2890:3890


最后几行唯一需要注意的地方就是 server.X 这个数字就是对应 data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配server.1,server.2,server.3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。



// server.X=A:B:C

其中X是一个数字,表示这是第几号server.

A是该server所在的IP地址.

B配置该server和集群中的leader交换消息所使用的端口.

C配置选举leader时所使用的端口

进入数据文件夹创建myid为1

cd  /home/hadoop/app/zookeeper-3.4.7/tmp/

echo 1 > /home/hadoop/app/zookeeper-3.4.7/tmp/myid    (对应上面的X 1:1号server)




将配置到的zookeeper拷贝到其他电脑(slave01,slave02)上

 scp -r zookeeper-3.4.7 hadoop@slave01:/opt/app  (-r表示递归)

scp -r zookeeper-3.4.7 hadoop@slave02:/opt/app


修改属组
[root@master opt]# chown -R hadoop:hadoop zookeeper-3.4.7


注意:修改slave01、slave02对应/home/hadoop/app/zookeeper-3.4.7/tmp/myid内容

slave01:

echo 2 > /home/hadoop/app/zookeeper-3.4.7/tmp/myid 


slave02:

echo 3 > /home/hadoop/app/zookeeper-3.4.7/tmp/myid 


配置环境变量

sudo vi /etc/profile

export ZOOKEEPER_HOME=/opt/app/zookeeper-3.4.7

export PATH=$PATH:$ZOOKEEPER_HOME/bin

(同样在master、slave02节点上也进行同样的操作)



启动,在三台机器上执行

bin/zkServer.sh start     bin/zkServer.sh stop(关闭)

判断是否启动成功

Jps



或者查看进程-#有信息则启动成功

ps -aux | grep 'zookeeper' 



最好查看日志 #查看是否报错

tail -f -n 500 zookeeper.out


查看zookeeper角色

在master节点上:

zkServer.sh status


在slave01节点上:



在slave02节点上:



Leader角色至始至终只有一个,通过选举算法产生。节点中只要有一个leader死掉,马上就会通过选举算法产生一个新的leader.

进入zookeeper-3.4.7/bin 目录中,./zkServer.sh start启动一个server,这时会报大量错误?其实没什么关系,因为现在集群只起了1台server,zookeeper服务器端起来会根据zoo.cfg的服务器列表发起选举leader的请求,因为连不上其他机器而报错,那么当我们起第二个zookeeper实例后,leader将会被选出,从而一致性服务开始可以使用,这是因为3台机器只要有2台可用就可以选出leader并且对外提供服务(2n+1台机器,可以容n台机器挂掉)。

来自: http://my.oschina.net/u/189445/blog/597982