为什么我们需要Hadoop堆栈中的ZooKeeper?

2022-09-01 03:43:20

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


答案 1

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

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

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

Zookeeper 是一个分布式存储,提供以下保证(从 Zookeeper 概述页面复制):

  • 顺序一致性 - 来自客户端的更新将按发送顺序应用。
  • 原子性 - 更新要么成功,要么失败。无部分结果。
  • 单个系统映像 - 客户端将看到相同的服务视图,而不管它连接到哪个服务器。
  • 可靠性 - 应用更新后,它将从那时起一直存在,直到客户端覆盖更新。
  • 及时性 - 保证系统的客户端视图在特定时间范围内是最新的。

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

如果您打算自己使用ZooKeeper,我建议您看看Netflix的Curator,它使其更易于使用(例如,他们开箱即用地实施了一些食谱)


答案 2

Zookeeper解决了可靠的分布式协调问题,hadoop是一个分布式系统,对吧?

有一篇很好的Paxos算法论文,你可以阅读这个主题。


推荐