ZooKeeper安装

ZooKeeper安装

管理员
2025年6月25日
大数据
#大数据

1. 集群环境

192.168.43.205  master

192.168.43.79    slave1

192.168.43.32    slave2

安装有jdk、hadoop

 

2. 安装zookeeper

# wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz

[root@master src]# tar -xvf zookeeper-3.4.5.tar.gz -C /opt

解压即可用

 

3. 环境变量配置

[root@master ~]# vim /etc/profile

export ZOOKEEPER_HOME=/opt/zookeeper-3.4.5

export PATH=$ZOOKEEPER_HOME/bin:$PATH

[root@master ~]# source /etc/profile

 

4. 配置过程

[root@master ~]# cd /opt/zookeeper-3.4.5/

创建数据、日记保存目录

[root@master zookeeper-3.4.5]# mkdir data

[root@master zookeeper-3.4.5]# mkdir log

[root@master zookeeper-3.4.5]# cd conf

[root@master conf]# cp zoo_sample.cfg zoo.cfg

[root@master conf]# vim zoo.cfg

dataDir=/opt/zookeeper-3.4.5/data

dataLogDir=/opt/zookeeper-3.4.5/log

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

 

5. 传输给其他两台服务器

[root@master ~]# scp -r /opt/zookeeper-3.4.5/ slave1:/opt

[root@master ~]# scp -r /opt/zookeeper-3.4.5/ slave2:/opt

[root@master ~]# scp /etc/profile slave1:/etc/

[root@master ~]# scp /etc/profile slave2:/etc/

[root@slave1 ~]# source /etc/profile

[root@slave2 ~]# source /etc/profile

 

6. 添加mydi文件

要求 myid中的值要与配置文件server.X 中设置的X 相一致,且路径要与datadir中一致

[root@master ~]# echo 1 >/opt/zookeeper-3.4.5/data/myid

[root@slave1 ~]# echo 2 >/opt/zookeeper-3.4.5/data/myid

[root@slave2 ~]# echo 3 >/opt/zookeeper-3.4.5/data/myid

 

7. 启动服务

[root@master ~]# zkServer.sh start

[root@master ~]# zkServer.sh status   启动完了查看状态

其它两台也是一样的,注意关闭selinux、防火墙

 

[root@master bin]# jps

4404 NameNode

4565 SecondaryNameNode

6524 Jps

3277 JobHistoryServer

4749 ResourceManager

6493 QuorumPeerMain     #zookeeper进程

 

8. 测试leader故障后切换情况

[root@slave2 bin]# zkServer.sh stop

[root@slave2 bin]# ps -aux | grep zookeeper

 

这时查看其他两台服务器状态

[root@master bin]# zkServer.sh status

JMX enabled by default

Using config:/opt/zookeeper-3.4.5/bin/../conf/zoo.cfg

Mode: follower

 

[root@slave1 ~]# zkServer.sh status

JMX enabled by default

Using config: /opt/zookeeper-3.4.5/bin/../conf/zoo.cfg

Mode: leader

现在slave1成为主了

 

9. Zookeeper客户端四字符指令

conf 配置信息

cons 连接信息

dump 未处理会话节点

envi 环境信息

reqs 未处理请求  

stat 统计信息

wchs 服务器watch的详细信息

wchp 列出指定路径下服务器信息

[root@master bin]# echo conf | nc 192.168.43.205 2181

clientPort=2181

dataDir=/opt/zookeeper-3.4.5/data/version-2

dataLogDir=/opt/zookeeper-3.4.5/log/version-2

。。。。。。

 

[root@master ~]# echo envi |nc192.168.43.205 2181

[root@master ~]# echo stat |nc 192.168.43.205 2181

 

10. Zookeeper客户端命令

通过zkCli.sh 连接服务器

zkCli.sh -server master/slave1/slave2:2181

[root@master bin]# ./zkCli.sh

Connecting to localhost:2181

。。。。。。

WATCHER::

WatchedEvent state:SyncConnected type:Nonepath:null

[zk: localhost:2181(CONNECTED) 0] h      ##帮助命令

ZooKeeper -server host:port cmd args

     statpath [watch]

     setpath data [version]

      。。。。。。

 

[zk: localhost:2181(CONNECTED) 1] ls /    #列出目录内容

[zookeeper]

[zk: localhost:2181(CONNECTED) 2] ls /zookeeper

[quota]

[zk: localhost:2181(CONNECTED) 3] ls /zookeeper/quota

[]

[zk: localhost:2181(CONNECTED) 5] create /root test #创建目录及数据

Created /root

[zk: localhost:2181(CONNECTED) 7] ls /

[zookeeper, root]

[zk: localhost:2181(CONNECTED) 8] get /root #获取数据

test

cZxid = 0x500000006

ctime = Sat Feb 24 06:16:16 CST 2018

mZxid = 0x500000006

mtime = Sat Feb 24 06:16:16 CST 2018

pZxid = 0x500000006

。。。。。。

 

需要注意的是ZK是不能一次创建多级节点的

[zk: localhost:2181(CONNECTED) 9] create /root/s1/s1-1 #报错

[zk: localhost:2181(CONNECTED) 10] ls /root      #查看为空

[]

[zk: localhost:2181(CONNECTED) 11] create /root/s1 s1-data

Created /root/s1

[zk: localhost:2181(CONNECTED) 12] create /root/s2 s2-data

Created /root/s2

[zk: localhost:2181(CONNECTED) 13] create /root/s3 s3-data

Created /root/s3

[zk: localhost:2181(CONNECTED) 14] ls /root

[s3, s1, s2]

 

查看状态

[zk: localhost:2181(CONNECTED) 15] stat /root

cZxid = 0x500000006

ctime = Sat Feb 24 06:16:16 CST 2018

。。。。。。

 

删除目录

[zk: localhost:2181(CONNECTED) 16] delete /root/s3

[zk: localhost:2181(CONNECTED) 17] ls /root

[s1, s2]

 

断开连接

[zk: localhost:2181(CONNECTED) 18] close

2018-02-24 06:27:08,915 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@509]- EventThread shut down

2018-02-24 06:27:08,917 [myid:] - INFO [main:ZooKeeper@684] - Session:0x161c4b008a20002 closed

 

重新连接

由于ZK服务器间的数据是一致的,因此这次我连接其它服务器

[zk: localhost:2181(CLOSED) 19] connect master:2181

[zk: master:2181(CONNECTED) 20] get /root

test

cZxid = 0x500000006

。。。。。。

 

[zk: master:2181(CONNECTED) 21] get /root/s1

s1-date

。。。。。。

 

退出:quit

最后更新于 2025/6/25