java 为什么我们在 Hadoop 堆栈中需要 ZooKeeper

bjzhanghao 阅读:895 2023-06-01 16:47:11 评论:0

我是 Hadoop/ZooKeeper 的新手。我无法理解将 ZooKeeper 与 Hadoop 一起使用的目的,ZooKeeper 是否在 Hadoop 中写入数据?如果不是,那我们为什么要在 Hadoop 中使用 ZooKeeper?

请您参考如下方法:

Hadoop 1.x 不使用 Zookeeper。即使在 Hadoop 1.x 安装中,HBase 也使用 zookeeper。

Hadoop 从 2.0 版开始也采用了 Zookeeper。

Zookeeper 的目的是集群管理。这符合 *nix 使用较小的专用组件的一般理念 - 因此需要集群功能的 Hadoop 组件依赖 Zookeeper 而不是自己开发。

Zookeeper 是一种分布式存储,提供以下保证(复制自 Zookeeper overview page):

  • 顺序一致性 - 来自客户端的更新将应用于 发送它们的命令。
  • 原子性 - 更新要么成功,要么 失败。没有部分结果。
  • 单一系统镜像 - 客户端将看到 无论它连接的服务器如何,服务的相同 View 至。
  • 可靠性 - 应用更新后,它将持续存在 从那时起,直到客户端覆盖更新。
  • 及时性 - 保证系统的客户 View 在一定时间内保持最新。

您可以使用它们来实现集群管理所需的不同“recipes”,例如锁、领导选举等。

如果你打算自己使用 ZooKeeper,我建议你看看 Curator from Netflix这使得它更易于使用(例如,他们实现了一些开箱即用的配方)


标签:zookeeper
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

全民解析

全民解析

关注我们