2 Zookeeper安装
(1)安装部署
步骤1:解压到/opt/module下
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module
# 为了方便可以改个名
mv apache-zookeeper-3.5.7-bin.tar.gz zookeeper
步骤2:配置环境变量
sudo vim /etc/profile.d/my_env.sh
# 增加如下内容:
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
步骤3:让环境变量生效
source /etc/profile.d/my_env.sh
# 或者重新连接这个ssh窗口
步骤4:配置zookeeper的环境变量
cd /opt/module/zookeeper/conf
# 复制zoo.sample.cfg为zoo.cfg,因为sample只是一个样例
cp zoo.sample.cfg zoo.cfg
# 修改zoo.cfg文件
vim zoo.cfg
修改内容
# 修改zookeeper存储快照的目录
dataDir=/opt/module/zookeeper/zkData
# 添加节点信息
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
配置参数解释:server.A=B:C:D
A是一个数字,表示这是第几台服务器
集群模式下配置dataDir=/opt/module/zookeeper/zkData下一个文件myid,里面填写A的值。Zookeeper启动时读取myid文件,拿到里面的A与zoo.cfg内的配置信息对比从而判断谁是server。
B是服务器地址
C是Follower与集群中Leader服务器交换信息的端口
D是万一集群中Leader服务器挂掉,需要一个重新选举Leader的端口。D就是用来执行选举Leader,服务器相互通信的端口。
步骤5:创建dataDie的文件夹
touch /opt/module/zookeeper/zkData
步骤6:在此文件夹内创建myid文件,表明自己是谁
[atguigu@hadoop102 zkData]$ vim myid
# 在里面填写
2
步骤7:分发zookeeper到其他节点
xsync /opt/module/zookeeper
步骤8:分发环境变量到其他节点
sudo xsync /etc/profile.d/my_env.sh
步骤9:让其他节点的环境变量生效
source /etc/profile.d/my_env.sh
# 或者重新开启ssh窗口
步骤10:修改其他节点的dataDir中的myid
[atguigu@hadoop103 ~]$ echo 3 > /opt/module/zookeeper/zkData/myid
[atguigu@hadoop104 ~]$ echo 4 > /opt/module/zookeeper/zkData/myid
步骤11:启动zookeeper
[atguigu@hadoop102 ~]$ zkServer.sh start
开启后可以看到STARTED表示zookeeper服务已开启。
可以看到zookeeper的主进程为QuorumPeerMain
查看zookeeper状态
[atguigu@hadoop102 ~]$ zkServer.sh status
仅开启一台服务器zookeeper服务,不能正常运行。
开启两台zookeeper服务器才能显示状态。
关闭zookeeper
[atguigu@hadoop103 ~]$ zkServer.sh stop
步骤12:群起zookeeper服务
zookeeper不提供群起服务,需要自己写shell脚本
vim /zkS.sh
#!/bin/bash
if (($#==0))
then
exit 1;
fi
for i in hadoop102 hadoop103 hadoop104
do
echo "===================== Starting zk in $i ======================="
ssh $i "zkServer.sh $1" 2> /dev/null
done
将该脚本放到/bin目录下
sudo cp zkS.sh /bin
# 增加可执行权限
sudo chmod +x zkS.sh
群起zookeeper服务
zkS.sh start
查看集群状态
关闭集群
(2)zookeeper配置参数
# 通信心跳数2秒,zookeeper服务器与客户端心跳时间,单位毫秒。
tickTime=2000
# 10个通信心跳,20秒,集群中Leader服务器和Follower服务器初始连接能容忍的最大心跳数。
initLimit=10
# 5个通信心跳,10秒,集群中Leader和Follower之间最大响应时间,超过10秒,Leader认为Follower死掉,从而在服务器列表中删除该Follower
syncLimit=5
# 数据文件目录+数据持久化路径,用于保存Zookeeper中的数据
dataDir=/opt/module/zookeeper/zkData
# 监听客户端连接的端口
clientPort=2181
# 集群中的服务器列表,与myid相对应
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888