ZooKeeper详解


文章目录

ZooKeeper

作用

  • ZooKeeper在大数据组件中起着重要的协调作用,帮助实现高可用性和一致性。
  • 通常用于监控主备节点,实现高可用;也用于同步数据。
举例

1.在Hadoop YARN中,实现了ResourceManager的HA。当主ResourceManager节点故障时,ZooKeeper会帮助切换到备用的ResourceManager节点。

2.在HBase中,实现了RegionServer的HA。当一个HBase RegionServer节点失效时,ZooKeeper帮助重新分配这个节点的负载给其他可用的节点。

3.在Spark中,实现了Master的HA。如果当前的Master节点失效,ZooKeeper会通知备用Master节点接管。

设计原理

  • 文件系统(存储和管理数据)+通知机制(当观察者观察的Znode[Zookeeper DataNode]的数据状态发生变化之后,ZooKeeper通知在Zookeeper上注册的观察者(客户端)做出相应的反应)
  • 观察者模式
    • 当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应。

Znodes的状态变化

  1. 创建Znode:服务器启动时去ZooKeeper注册信息
  2. 删除Znode:服务器下线时去ZooKeeper注销信息
  3. 更新Znode数据:服务的配置信息发生变化,去更新ZooKeeper中相关的Znode的数据。
  4. 子节点变化:如果一个Znode有子节点,这些子节点的添加或删除也会被视为父ZNode的状态变化。

具体步骤ZooKeeper原理

  1. 注册观察
    • 服务器启动时在ZooKeeper集群中通过创建或更新Znodes来完成注册信息
    • 客户端获取当前服务器列表,并注册监听。
  2. 事件触发
    • 如果服务器发生事件,在集群中的Znodes发生相应的状态变化(如数据更新、节点删除、子节点变化)。ZooKeeper集群将检测到这些变化。
  3. 通知观察者
    • ZooKeeper会向所有对该znode注册了观察的客户端发送通知。这些通知是一次性的,也就是说,一旦发送了通知,相应的观察就被移除了。
    • 如果客户端需要继续监视该znode的后续变化,它必须再次注册观察。
  4. 客户端响应
    • 收到通知后,客户端进行操作(如读取更新后的数据,调整其内部状态)。

ZooKeeper数据结构(了解)

  • 树结构
    • ZooKeeper
      • config 存储集群的动态配置
      • quota 实现节点的配额管理

ZooKeeper CLI

  • zkCli.sh:进入ZooKeeper
  • ls path:查看路径对应znode下的所有子节点
  • get path:获取节点的值

ZooKeeper 端口号

  1. 客户端连接端口(Client Port):默认为2181,用于客户端与zookeeper服务器进行通信。
  2. 服务器之间通信端口(Peer Port)):默认为2888,用于zookeeper服务器之间进行数据同步和选举。
  3. 选举通信端口(Leader Election Port)):默认为3888,用于zookeeper服务器之间进行选举。

Zookeeper角色

ZooKeeper选举机制

半数机制
  • 集群中半数以上机器存活,集群可用
  • ZooKeeper工作时,有一个节点为Leader,其他为Follower,Leader是通过内部选举机制临时产生的
  • Leader选举是保证分布式数据一致性的关键所在
    1. 单一写入点。
    2. 更新状态,确保数据全局一致性。
    3. Leader失联时进行新的Leader选举。
leader选举触发时机
  • 服务器初始化启动(没有Leader)
  • 服务器运行期间无法和Leader保持连接(Leader故障)
补充
  • 通常ZooKeeper的机器数是奇数。
  • 后加的机器一定不会是Leader。
  • 每一次进行状态更新,zxid递增,对于具有相同zxid的机器,myid越大的机器会成为Leader。
相关推荐
一只栖枝几秒前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
喂完待续4 小时前
Apache Hudi:数据湖的实时革命
大数据·数据仓库·分布式·架构·apache·数据库架构
青云交4 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
还是大剑师兰特10 小时前
Flink面试题及详细答案100道(1-20)- 基础概念与架构
大数据·flink·大剑师·flink面试题
yh云想13 小时前
《从入门到精通:Kafka核心原理全解析》
分布式·kafka
1892280486114 小时前
NY243NY253美光固态闪存NY257NY260
大数据·网络·人工智能·缓存
武子康14 小时前
大数据-70 Kafka 日志清理:删除、压缩及混合模式最佳实践
大数据·后端·kafka
CCF_NOI.16 小时前
解锁聚变密码:从微观世界到能源新未来
大数据·人工智能·计算机·聚变
杨荧16 小时前
基于Python的电影评论数据分析系统 Python+Django+Vue.js
大数据·前端·vue.js·python
数据智研17 小时前
【数据分享】上市公司创新韧性数据(2007-2023)
大数据·人工智能