安装zookeeper环境
zookeeper安装包:https://pan.baidu.com/s/1fpdBs8kbjPj5rlrwusv1iw
提取码:h1wv
需要准备号jdk环境:参考:https://blog.csdn.net/weixin_44147632/article/details/107796624
解压:tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/bigdata/hadoop/
改名:mv zookeeper-3.4.5 zookeeper345
在hadoop
目录下新建目录:mkdir zookeeper
建立软连接:ln -s zookeeper345/ zookeeper/
在zookeeper
目录下新建目录mkdir zkdata
修改zookeeper配置文件:cd /opt/bigdata/hadoop/zookeeper345/conf
重命名:mv zoo_sample.cfg zoo.cfg
文件,然后:vi zoo.cfg
修改配置
配置信息:
tickTime=2000 毫秒,服务器和客户端之间,服务器之间的心跳间隔,最小超时为2倍
initLimit=10 follower启动后与leade之间同步数据,并且确定可以对外服务状态的最大时限为10*tickTime
syncLimit=5 follower和leader之间如果在syncLimit*tickTime时间内无法通过心跳确认,则leader判定该follower死亡,移出服务列表
dataDir=/opt/bigdata/hadoop/zookeeper/zkdata
clientPort=2181
server.1=vwmaster:2888:3888
server.2=vwslave01:2888:3888
server.3=vwslave02:2888:3888
server.4=vwslave03:2888:3888
在zkdata
目录中创建myid
文件,并将当前host
下对应的服务器编号1/2/3/4存在其中
配置环境变量
export ZK_HOME=/opt/bigdata/hadoop/zookeeper345
export PATH=$ZK_HOME/bin:$$ZK_HOME/sbin:$PATH
激活环境变量:
source /etc/profile
复制以上过程至其他三台机器后,分别在4台机器上,注意修改zkdata
目录中的myid
,改为对应节点的序号1/2/3/4
启动zookeeper服务:zkServer.sh start
关闭:zkServer.sh stop
查看状态:zkServer.sh status
“一键”启动zookeeper脚本
starthd.sh
#!/bin/bash
ES_HNS='vwmaster vwslave01 vwslave02 vwslave03'
THIS_HN=$HOSTNAME
exitOnErr(){
if [ 0 -ne $? ]
then
echo '异常:'$1
exit 0
fi
}
for HN in $ES_HNS
do
if [ $THIS_HN != $HN ]
then
cd /root/hdstart/
./remotehd.sh $HN
exitOnErr '文件 ./remotehd.sh 不存在'
else
cd ~
zkServer.sh start
exitOnErr $HN'启动失败'
cd ~
fi
done
remotehd.sh
#!/bin/bash
CMD='ssh root@'$1
$CMD > /dev/null 2>&1 << eeooff
cd ~
zkServer.sh start
exit
eeooff
echo done!
zookeeper的主从机选取机制
follower为从机,leader为主机,投票选取机制,半数以上的节点存活
例如有5个节点1、2、3、4、5,节点1启动之后,只有它自己一台,等待其他节点启动,此时节点2启动,发现只有1和自己启动,继续等待,直到第三台节点启动,此时,存活节点超过半数,开始投票,由于每个节点会先投自己一票,于是节点3顺理成章变成leader节点,其他的1、2包括后启动的4、5都是follower。此时leader与各个follower之前保持通信,以查看个节点状态。
如果节点3突然挂掉,follower与leader之间的通信断了,此时又开始新一轮投票,确定新的leader。