大数据技术学习——管理组件ZooKeeper
【摘要】 ZooKeeper(ZK)是提供一致性协调服务的组件,本质上是一个提供监听机制的文件系统。
1 一句话介绍
ZooKeeper(ZK)是提供一致性协调服务的组件,本质上是一个提供监听机制的文件系统。
2 基本概念
- znode:ZK本质是一个分布式的树形文件系统,树上每个目录节点(znode)负责存储数据。可以像操作普通文件系统那样自由删除增加znode或添加子znode。znode分为持久化节点以及临时节点。
- 持久化节点(Persistent):客户端会话断开后节点仍然存在。特别地,持久化顺序编号节点会自动分配一个顺序编号。
- 临时节点(Ephemeral):客户端会话断开后节点即被删除。特别地,临时顺序编号节点会自动分配一个顺序编号。临时节点不能有子节点。
- watcher:ZK采用watcher实现监听机制。客户端生成watcher对象后,将其注册到ZK中,自身WatchManager也保留一份。当ZK监控到数据发生变化时,会主动通知到客户端。
3 ZooKeeper架构
ZK部署在(2N+1)个节点之上,只有当(N+1)个投票才能执行写操作。
- Leader:由Follower通过ZAB协议投票产生,负责接收和协调所有写请求。
- Follower:Leader的替补,转发写请求给Leader,执行来自Leader的写请求。
- Observer:只处理读请求以及同步Leader的数据。不参与Leader选举以及写请求投票。
- Client:集群中所有使用ZK一致性服务的组件都可以是客户端,例如HMaster。
4 ZooKeeper读写流程
- 写流程:
- 任意节点接收到写请求都转发给Leader。
- Leader与Follower投票决定是否接收该写请求。
- Leader和Follower超半数返回写入成功则返回写入成功,反之失败。
- 读请求:所有节点均可以接收读请求。
5 ZooKeeper功能
- 命名服务:各服务注册到ZK,在ZK上的路径是唯一的,即可充当其命名;此外,顺序编号节点也提供了唯一编号,可用作命名。
- 配置管理:发布者将配置发送到ZK,由ZK通知到各个相关组件或节点。
- 组员管理:集群Slave节点的信息都会注册到ZK上,Master可以通过ZK统一管理。
- 分布式锁:将某个znode看做锁,或某个znode下创建临时顺序编号节点,编号最小者即为锁。
- 分布式队列:往znode中按需写入数据,创建消息节点。
- 高可用:其他Active-Standby部署的组件,将自身信息注册到ZK上。一旦Active组件异常,ZK通知Standby节点升主。例如NameNode、HMaster、Yarn RM等。
6 参考
- https://blog.csdn.net/java_66666/article/details/81015302
- https://juejin.cn/post/6903693927434420232
- https://blog.csdn.net/Weixiaohuai/article/details/112864979
- https://www.cnblogs.com/felixzh/p/5869212.html
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)