Zookeeper 的安装及应用

系统环境:Centos6.9

Zookeeper 的介绍

分布式系统-CAP 定理
1. 分区容错性
2. 一致性
3. 可用性
不可以同时满足以上三个
4. 一致性和可用性的平衡方案
最终一致性 案例:Zookeeper

Zookeeper 的应用实践

  1. 最终一致性:保证最终数据到达一致
  2. 顺序性:从同一个客户端发起的事物请求,最终会严格按照发送顺序被用到 Zookeeper 中
  3. 可靠性:一旦服务器应用的一个事物,并完成了客户端的相应,那么该事物引起的服务端状态将会一致保留下去
  4. 实时性:不能保证两个客户端能同时得到刚刚更新的数据,如果需要最新数据,在读取数据前调用 sync()接口
  5. 原子性:一次数据更新要么成功,要么失败。
  6. 单一视图:无论客户端连接那个服务器,看到的数据模型一致

Zookeeper中的三个角色

  1. Server Leader (从Follower客户端中选取出来的)
  2. Server Follower 跟随者 (为客户端提供读写服务,发起选举,写请求转发给 Leader)
  3. Server Observer 观察者 (状态同步,客户端读请求,状态永远不会改变)

Zookeeper 写入

  1. 数据写入最终一致性核心算法 ZAB 算法
  2. Leader 负责助理写事物请求
  3. Follower 负责向 Leader 转发写请求,相应 Leader 发出的提议

Zookeeper 读取

访问 Follower 直接返回结果,如果要求数据同步就调用 sync 接口

Zookeeper 选举

1)服务器的四种状态
-LOOKING:寻找 Leader 状态,处于该状态需要进入选举流程
-LEADING:领导者状态,表明当前服务角色为 Leader
-FOLLOWING:跟随者状态,Leader 已经选举出来,表明该角色为 Follower
-OBSERVER:观察者状态,表明该服务角色 Observer

事物 ID:用 ZXID 表示,是64位的数,由 Leader 统一分配,全局唯一,不断递增。
事物请求就是对文件(Znode 操作)进行写请求,不更改就是非事物请求

2)全新启动过程
1. 每个 Server 发出一个投票,内容(myid(机器的文件号码),ZXID)
2. 接受来自各个 Server 的投票
3. 处理投票(首先比较事物 ID(谁的大谁当 Leader,一开始默认都是0),其次比较(myid),谁的 myid 大谁当)
4. 统计投票
5. 改变服务状态

3)运行期间选举

  1. 所有 Server 切换状态为 LOOKING,每个 Server 发出一个投票
  2. 接受来自 Server 的投票
  3. 处理投票
  4. 统计投票
  5. 改变服务器状态

数据模型 Znode(Zookeeper 的数据存储节点)

  1. 特有的数据节点 Znode结构类似 Linux,咩有目录和文件的概念
  2. Znode 是 Zookeeper 中数据的最小单元
  3. Znode 上可以保存数据,通过挂载子节点构成一个树状的层次化命名空间
  4. Znode 树的跟由”/”开始

Zonde-Watcher 机制

这里写图片描述
1)Client ——》 Zookeeper 集群 注册
2)Client ——》WatchManager 存储
3)Zookeeper 集群 ——》Client 通知
4)WatchManager ——》Client 执行回调

配置管理
1)将配置信息写入 Zookeeper 的一个 Zonde 上
2)各个节点监听这个 Znode
3)一旦 Znode 中的数据被修改,将通知各个节点更新。

Zookeeper 并不能解决脑裂问题,只能通过分布式系统内部解决
Zookeeper 功能
1)存储
2)监听


Zookeeper 的安装

1.下载 Zookeeper 安装包
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.11/

2.集群规划
主机名称 IP 部署软件
node1 192.168.183.100 zookeeper
node2 192.168.183.101 zookeeper
node3 192.168.183.102 zookeeper
部署三台机器,每台启动一个 zookeeper 进程

3.root 用户登录
useradd hadoop 创建一个 hadoop 用户
切换 hadoop 用户
cd /home/hadoop
创建 apps 目录,存放以后使用的软件
mkdir apps
4.上传 zookeeper 安装包
在 apps 内解压 tar -zxvf zookeeper-3.4.10.tar.gz
5.创建软连接
使用 root 用户
创建软连接ln -s /home/hadoop/apps/zookeeper-3.4.10 /usr/local/zookeeper
6.修改环境变量
使用 root 用户

vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin
使环境变量生效`source /etc/profile`

7.修改 zookeeper 软连接主人为 Hadoop
使用 root 用户

chown -R hadoop:hadoop /usr/local/zookeeper

8.修改 zookeeper 配置文件
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
编辑 zoo.cfg 文件
添加内容

dataDir=/usr/local/zookeeper/data    #快照文件存储目录
dataLogDir=/usr/local/zookeeper/log   #事务日志文件目录
#注意node1、node2、node3是安装zookeeper的主机名,根据自己的虚拟机自行修改
server.1=node1:2888:3888 (主机名, 心跳端口、数据端口)
server.2=node2:2888:3888
server.3=node3:2888:3888

9.创建 data、log 目录,只有 hadoop 用户有写权限
mkdir -m 755 data
mkdir -m 755 log

10.在 data 文件下创建 myid 文件,文件内容为编号
cd data
touch myid
echo 1 > myid

11.拷贝文件到其余机器中
提前在node2和node3创建好/home/hadoop/apps目录

scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@node2:/home/hadoop/apps
scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@node3:/home/hadoop/apps

12.修改其他节点下的 mydi 内容
node2的 myid 文件内容是2
node3的 myid 文件内容是3
13.启动
cd $ZOOKEEPER/bin
启动命令:./zkServer.sh satrt
查看状态命令:./zkServer.sh status

期间遇到的问题
1.之前要配置好 JDk 环境
2.启动命令运行后,使用 jps 命令查看,是不是增加进程QuorumPeerMain
3.使用./zkServer.sh status不能显示运行状态,查看自己的配置文件内容是否正确,以及 myid 书写进去的内容。
4.运行成功后,node2是 Leader,node1和 node3是follower
5.防火墙没有关闭
安装好之后,为以后的高可用打下基础。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值