Zoopkeeper数据模型结构与Linux文件系统很像,整体上可以看作一棵树,树的每个节点称作一个znode。每一个znode默认存储1MB数据,每个znode都可以通过路径唯一标识。
选举机制
- 当启动的机器数大于集群总机器数的一半,开始选举leader,myid最大的选为leader。
此后,剩余的机器启动后,只能作为follower。 - 当leader down后,从剩余的机器中依据myid最大的作为leader;如果down掉的机器又重新启动,只能作为follower。
数据版本最新,myid越大,选为leader
这里讲述Centos 7系统上搭建zookeeper分布式环境步骤。
前提条件:三台安装好jdk,关闭防火墙的机器。
zookeeper安装包下载:
链接:https://pan.baidu.com/s/1a2hIk2fF9s-jM47KoFzS_w
提取码:sy9z
安装
1.解压安装包
上传zookeeper安装包到/opt,创建文件夹soft,解压安装包,移动zookeeper文件夹到soft文件夹中。
mkdir /opt/soft
tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz
mv zookeeper-3.4.5-cdh5.14.2 /opt/soft/zookeeper345
2.创建数据存储目录zkData
在 /opt/soft/zookeeper345下,创建文件夹 zkData
mkdir zkData
3.配置zoo.cfg文件
进入zookeeper配置文件目录 /opt/soft/zookeeper345/conf
复制zoo_sample.cfg为zoo.cfg,修改文件zoo.cfg。
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改:dataDir=/opt/soft/zookeeper345/zkData
追加:
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
server.4=hadoop4:2888:3888
参数含义解释如下。 Server.A=B:C:D。
A:一个数字,表示每个服务器编号,注意必须唯一。
B:服务器的 ip 地址,规划了几个机器作为 ZooKeeper 服务器,就有几行记 录,每一个机器都对应一行。
C:是这个服务器与集群中的 Leader 服务器交换信息的端口;
D:如果集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出 一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
4.将配置好的 zookeeper 分发到其他机器上
hadoop3、hadoop4上相同操作
实现ssh无密登录后,可直接scp 远程拷贝命令实现
scp -r zookeeper345/ root@hadoop3:$PWD
scp -r zookeeper345/ root@hadoop4:$PWD
5.创建并配置myid文件
在每个节点上的zkData目录下创建一个【myid】文件,写一个数字(必须zoo.cfg中server.X 的x对应),但不能重复。
vi myid
hadoop2上myid内容:2
hadoop3上myid内容:3
hadoop4上myid内容:4
6.配置环境变量
在每一台机器上给 zookeeper 配置环境变量
vi /etc/profile 添加如下配置。
export ZK_HOME=/opt/soft/zookeeper345
export PATH=$ZK_HOME/bin:$ZK_HOME/sbin:$PATH
7.配置文件生效
source /etc/profile
8.三台机器依次启动服务
[hadoop@hadoop2 ~]$ zkServer.sh start
[hadoop@hadoop3 ~]$ zkServer.sh start
[hadoop@hadoop4 ~]$ zkServer.sh start
9.查看服务进程
jps
1588 QuorumPeerMain zookeeper服务进程
1612 Jps
10.查看状态
zkServer.sh status
[hadoop@hadoop2 ~]$ zkServer.sh status
JMX enabled by default
Using config: /opt/install/zookeeper/bin/../conf/zoo.cfg
Mode: follower
停止服务
zkServer.sh stop
选举机制测试:
测试1:
依次启动4 3 2
bin/zkServer.sh status 产看状态
4:Mode: leader
3:Mode: follower
2:Mode: follower
测试2:
依次启动2 3 4
bin/zkServer.sh status 产看状态
3:Mode: leader
4:Mode: follower
2:Mode: follower