1 Zookeeper简介
ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步、提供组服务。分布式应用程序以某种形式使用所有这些类型的服务。每次实现它们时,都有大量的工作要做,以修复不可避免的错误和竞争条件。由于实现这类服务的困难,应用程序最初通常会忽略它们,这使得它们在出现变化时变得脆弱,并且难以管理。即使正确地完成了这些服务,在部署应用程序时,这些服务的不同实现也会导致管理复杂性。
2 Zookeeper安装部署
前提条件
安装好jdk,安装jdk可参考 在CentOS7部署Hadoop-CSDN博客 中jdk安装
2.1 Zookeeper下载
从Zookeeper官网选 Apache ZooKeeper 选择合适的版本下载
以下集群部署以apache-zookeeper-3.7.1-bin.tar.gz为例
2.2 集群规划
node1 | node2 | node3 | |
Zookeeper | Zookeeper | Zookeeper | Zookeeper |
有三个节点为例,多个节点部署方法类似
2.3 解压安装
说明:在home/hadoop/soft下用于存放解压后的包
在home/hadoop/installfiles目录下用于存放安装包
在node1节点:
将下载好的安装包上传到/home/hadoop/installfiles目录下
在installfiles目录下将安装包解压到/home/hadoop/soft目录下
[hadoop@node1 ~]$ cd installfiles/
[hadoop@node1 installfiles]$ ls
apache-zookeeper-3.7.1-bin.tar.gz hadoop-3.3.4.tar.gz jdk-8u212-linux-x64.tar.gz
[hadoop@node1 installfiles]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C ~/soft/
为了方便后续的操作
切换到soft目录下apache-zookeeper-3.7.1-bin名称修改为zookeeper
[hadoop@node1 soft]$ mv apache-zookeeper-3.7.1-bin zookeeper
2.4 配置服务器编号
在/home/hadoop/soft/zookeeper/目录下创建zkData目录
[hadoop@node1 zookeeper]$ mkdir zkData
在/home/hadoop/soft/zookeeper/zkData目录下创建一个myid的文件
[hadoop@node1 zkData]$ vim myid
在文件中添加与server对应的编号:
1
2.5 配置zoo.cfg文件
此文件在zookeeper中的conf目录下,
重命名/home/hadoop/soft/zookeeper/conf目录下的zoo_sample.cfg为zoo.cfg
[hadoop@node1 conf]$ mv zoo_sample.cfg zoo.cfg
编写zoo.cfg文件
[hadoop@node1 conf]$ vim zoo.cfg
修改数据存储路径配置
dataDir=/home/hadoop/soft/zookeeper/zkData
在最后增加如下配置
#######################cluster##########################
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
解读配置
server.A=B:C:D
A是一个数字,表示这个是第几号服务器;
B是这个服务器的地址;
C是这个服务器Follower与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
使用xsync分发 xsync安装可参考在CentOS7部署Hadoop-CSDN博客中的安装rsync分发脚本部分
将/home/hadoop/soft/zookeeper目录内容分发到node2、node3
[hadoop@node1 soft]$ xsync zookeeper/
分别修改node2、node3在/home/hadoop/soft/zookeeper/zkData/myid文件中内容为2、3
2.6 启动集群
分别在node1、node2和node3上启动Zookeeper
切换到Zookeeper目录下使用bin/zkServer.sh start命令启动
查看状态
[hadoop@node1 zookeeper]$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/soft/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[hadoop@node2 zookeeper]$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/soft/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[hadoop@node3 zookeeper]$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/soft/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
2.7 集群启动停止脚本
在node1的/home/hadoop/bin目录下创建脚本zk.sh脚本
[hadoop@node1 zookeeper]$ cd /home/hadoop/bin
[hadoop@node1 bin]$ vim zk.sh
脚本内容如下
#!/bin/bash
case $1 in
"start"){
for i in node1 node2 node3
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/home/hadoop/soft/zookeeper/bin/zkServer.sh start"
done
};;
"stop"){
for i in node1 node2 node3
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/home/hadoop/soft/zookeeper/bin/zkServer.sh stop"
done
};;
"status"){
for i in node1 node2 node3
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/home/hadoop/soft/zookeeper/bin/zkServer.sh status"
done
};;
esac
添加权限
[hadoop@node1 bin]$ chmod 777 zk.sh
Zookeeper集群启动脚本
[hadoop@node1 bin]$ zk.sh start
Zookeeper集群停止脚本
[hadoop@node1 bin]$ zk.sh stop
Zookeeper集群状态查询脚本
[hadoop@node1 bin]$ zk.sh status
以上部署完成~~~
3 客户端
3.1启动客户端
[hadoop@node1 zookeeper]$ bin/zkCli.sh
3.2 客户端基本命令操作
命令基本语法 | 功能描述 |
help | 显示所有操作命令 |
ls path | 使用 ls 命令来查看当前znode的子节点 -w 监听子节点变化 -s 附加次级信息 |
create | 普通创建 -s 含有序列 -e 临时(重启或者超时消失) |
get path | 获得节点的值 -w 监听节点内容变化 -s 附加次级信息 |
set | 设置节点的具体值 |
stat | 查看节点状态 |
delete | 删除节点 |
deleteall | 递归删除节点 |