ZooKeeper 入门

1 ZooKeeper入门

1.1 概述

ZooKeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目。

1.2 特点

  • ZooKeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
  • 集群中只要有半数以上节点存活,ZooKeeper 集群就能正常服务。
  • 全局数据一致:每个 Server 保存一份相同的数据副本,Client 无论连接到哪个 Server,数据都是一致的。
  • 更新请求顺序进行,来自同一个 Client 的更新请求按其发送顺序依次执行。
  • 数据更新原子性,一次数据更新要么成功,要么失败。
  • 实时性,在一定时间范围内,Client 能读到最新数据。

1.3 数据结构

1.4 应用场景

  • HDFS/YARN
    • HA(分布式锁的应用):Master 挂掉之后迅速切换到 Slave 节点
  • Hbase
    • HA:Master 挂掉之后迅速切换到 Slave 节点
    • 配置管理:Client 需要读写 Hbase 的数据首先都是连到 ZooKeeper 读取 Root 表,获得 Meta 表所在的 Region,最后找到数据所在位置
    • 任务发布:RegionServer 挂了一台,Master需要重新分配 Region,会把任务放在 ZooKeeper 等 RegionServer 来获取
  • Kafka
    • 配置管理:Broker 会在 ZooKeeper 注册并保持相关的元数据(Topic,Partition 信息等)更新
    • 任务分配:给 Topic 分配 Partitions 和 Replication

2 ZooKeeper安装

2.1 本地模式安装部署

安装前准备

1、解压到指定目录

[djm@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/

配置修改

1、将 /opt/module/zookeeper-3.4.10/conf 这个路径下的 zoo_sample.cfg 修改为zoo.cfg

2、将 zoo.cfg 文件中的 dataDir 修改为 /opt/module/zookeeper-3.4.10/zkData

ZooKeeper 常用操作

1、启动 ZooKeeper

[djm@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start

2、查看状态

[djm@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh status

3、启动客户端

[djm@hadoop102 zookeeper-3.4.10]$ bin/zkCli.sh

4、退出客户端

[zk: localhost:2181(CONNECTED) 0] quit

5、停止 ZooKeeper

[djm@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh stop

2.2 配置参数解读

1、tickTime =2000:通信心跳数,ZooKeeper 服务器与客户端心跳时间,单位毫秒

ZooKeeper 使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳,时间单位为毫秒

它用于心跳机制,并且设置最小的 session 超时时间为两倍心跳时间(session 的最小超时时间是 2*tickTime)

2、initLimit =10:LF 初始通信时限

集群中的 Follower 跟随者服务器与 Leader 领导者服务器之间初始连接时能容忍的最多心跳数(tickTime 的数量),用它来限定集群中的 ZooKeeper 服务器连接到 Leader 的时限

3、syncLimit =5:LF 同步通信时限

集群中 Leader 与 Follower 之间的最大响应时间单位,假如响应超过 syncLimit * tickTime,Leader 认为 Follwer死掉,从服务器列表中删除 Follwer

4、dataDir:数据文件目录+数据持久化路径

主要用于保存 ZooKeeper 中的数据。

5、clientPort =2181:客户端连接端口

监听客户端连接的端口

3 ZooKeeper 实战

3.1 分布式安装部署

集群规划

1、在 hadoop102、hadoop103 和 hadoop104 三个节点上部署 ZooKeeper

ZooKeeper 分发

1、同步 /opt/module/zookeeper-3.4.10 目录内容到 hadoop103、hadoop104

配置服务器编号

1、在/opt/module/zookeeper-3.4.10/zkData 目录下创建一个 myid 的文件,添加与 server 对应的编号

配置 zoo.cfg 文件

1、添加如下配置

# 2是第几号服务器
# hadoop102是这个服务器的地址
# 2888是Follower与Leader交换信息的端口
# 3888是服务器通信端口
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

2、同步 zoo.cfg

分别启动 ZooKeeper

3.2 客户端命令行操作

命令基本语法 功能描述
help 显示所有操作命令
ls path [watch] 使用 ls 命令来查看当前znode中所包含的内容
ls2 path [watch] 查看当前节点数据并能看到更新次数等数据
create 普通创建 -s 含有序列 -e 临时(重启或者超时消失)
get path [watch] 获得节点的值
set 设置节点的具体值
stat 查看节点状态
delete 删除节点
rmr 递归删除节点

3.3 Stat 结构体

状态属性 说明
cZxid 数据节点创建时的事务ID
ctime 数据节点创建时的时间
mZxid 数据节点最后一次更新时的事务ID
mtime 数据节点最后一次更新时的时间
pZxid 数据节点子节点列表最后一次被修改(是子节点列表变更,而不是子节点内容变更)时的事务ID
cversion 子节点的版本号
dataVersion 数据节点的版本号
aclVersion 数据节点的ACL版本号
ephemeralOwner 节点是临时节点,则表示创建该节点的会话的SessionID,节点是持久节点,则该属性值为0
dataLength 数据内容的长度
numChildren 数据节点当前的子节点个数

3.4 API 应用

导入依赖:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值