ZooKeeper安装
ZooKeeper安装
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