0x01 Zookeeper的获取
1. 官网下载
a. 为了统一,此处下载zk3.4.10版本 :https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/
0x02 上传安装包到集群
1. 上传安装包到虚拟机
PS:如果不是docker部署的集群,则直接上传到虚拟机即可,因为,每台虚拟机就是一个节点。
2. 复制安装包到master节点
docker cp zookeeper-3.4.10.tar.gz hadoop-master:/root
sh master.sh
ll
0x03 安装Zookeeper集群
1. 在master上安装单机版zk
a. 解压安装包(-C为指定解压到/usr/local路径)
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local
b. 创建Zookeeper对应的路径:
mkdir /usr/local/zookeeper-3.4.10/datadir
mkdir /usr/local/zookeeper-3.4.10/log
c. 修改Zookeeper的配置文件($ZK_HOME/conf):
cd /usr/local/zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
- 修改dataDir,加上dataLogDir:
dataDir=/usr/local/zookeeper-3.4.10/datadir
dataLogDir=/usr/local/zookeeper-3.4.10/log
- 配置环境变量(可看到docker生成节点时默认配好的其他环境变量)
vi /etc/profile
export ZK_HOME=/usr/local/zookeeper-3.4.10 export PATH=$PATH:$ZK_HOME/bin
- 使配置生效(echo一下有内容输入,说明已经配好)
source /etc/profile
2. 校验单机版zk
a. 启动Zookeeper
zkServer.sh start
b. 查看进程(有QuorumPeerMain说明成功)
jps
3. 在同步zk到slave1、slave2
a. 停止master上的zk
zkServer.sh stop
b. 配置集群所需的参数及文件
- 添加上节点的关系(修改成自己对应的节点名)
vi zoo.cfg
server.0=hadoop-master:8880:7770 server.1=hadoop-slave1:8881:7771 server.2=hadoop-slave2:8882:7772
- 在之前创建的datadir目录下创建表示文件
vi ../datadir/myid
然后输入0,保存,退出
c. 复制zk主目录到slave1、slave2
scp -r /usr/local/zookeeper-3.4.10 root@hadoop-slave1:/usr/local/
复制成功截图:
d. 切换到slave1终端
vi /usr/local/zookeeper-3.4.10/datadir/myid
然后把0改为1,保存,退出
e. 配置环境变量,与master时一样
f. slave2同理,与c.d.e.三点类似,myid为2
0x04 Zookeeper集群校验
1. 启动三个节点的zk
zkServer.sh start
2. 查看zk集群角色状态
zkServer.sh status
可看到:
master与slave2角色为:follower
slave1角色为:leader
3. 杀死leader进程
a. 即杀死slave1上的zk进程,在slave1终端执行
jps
kill -9 429
4. 观察zk集群角色变化
a. 在master、slave2查看zk状态
zkServer.sh status
b. 发现master角色不变还是follower,而slave2则变成了leader,这就是Zookeeper的选举机制,选举有特定的算法
c. 在master、slave2执行关闭zk
zkServer.sh stop
d. 再重新启动zk集群(方便下面的教程学习)
zkServer.sh start
e. 查看角色状态(这次master为leader)
zkServer.sh status
0xFF 总结
- Zookeeper是一个分布式协调服务系统,在大数据领域的地位很重要,Kafka、HBase、HDFS的HA等均离不开zk
- Zookeeper有两个常用的应用场景,1.是对集群配置的管理2.集群分布式锁的实现
- 请自行了解Zookeeper的相关用法,或者留意本博客的相关教程。