Hadoop集群下的ZooKeeper配置

安装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。
在这里插入图片描述

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页