浅谈我们为什么需要zookeeper?

Zookeeper在分布式系统中的协调作用

Zookeeper 是一个常见的分布式协调工具,在许多大数据组件中都发挥着关键作用。那么,Zookeeper如何成为一个有效的协调工具呢?

Zookeeper的文件系统

Zookeeper拥有一个自有的文件系统,这个系统能够监控目录的变化,这是其作为协调工具的核心功能。

Hadoop中的Zookeeper

以Hadoop 2.0的HA(高可用性)功能为例,Zookeeper实现了NameNode的主备切换。下图展示了HA架构图:

HA架构图

在HA架构中:

  • ZKFC服务中的zkClient客户端向Zookeeper集群注册了一个短暂性目录。这个目录的生命周期与zkClient的连接状态相关联,当zkClient关闭时,该目录会消失。
  • 备份节点的ZKFC服务也包含一个zkClient客户端,它实时监控这个目录的变化。一旦目录消失,zkClient会调用回调函数,启动备份节点成为新的主节点。

这就是Zookeeper为Hadoop提供的协调服务。

Kafka中的Zookeeper

在Kafka中,Zookeeper也扮演着重要角色。Kafka依赖Zookeeper集群来协调工作。具体来说:

  • 在Kafka 0.8版本之前,Zookeeper用于存储offset和broker节点的注册信息。
  • 从Kafka 0.10版本开始,Zookeeper不再存储offset,只保留broker节点信息。

Zookeeper在Kafka中的作用如下图所示:

Kafka Zookeeper

当某个broker宕机时:

  • 其他broker通过观察者模式检测到这一变化。
  • 触发回调函数进行处理,例如重新分布数据等操作。

Zookeeper的主从结构

Zookeeper自身也有主从结构,如下图所示:

Zookeeper主从结构

如何检测Leader宕机

Zookeeper中的每个服务器都有一个zkClient客户端,这些客户端实时监控Zookeeper的目录。当Leader宕机时:

  • 目录中的文件系统会发生变化。
  • Zookeeper通过创建短暂目录来实现这一功能,创建短暂目录的命令为:create -e。当连接的zkClient断开时,这些短暂目录会消失。
  • 其他服务器会检测到Leader宕机,并触发回调函数,重新选举新的Leader。

Zookeeper的文件目录结构如下图所示:

Zookeeper目录

这个目录是Zookeeper集群自我监控的关键部分。

总结

Zookeeper在分布式系统中扮演着至关重要的角色。掌握Zookeeper的工作原理,可以帮助我们更好地理解其他大数据组件。

如果你觉得有收获,请给作者点个赞吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高 亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值