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。
相关推荐
武子康7 小时前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
初次攀爬者1 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
武子康1 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP2 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库2 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟2 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人2 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长2 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人2 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城2 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark