HBase如何使用ZooKeeper?

How HBase uses ZooKeper?

我知道 ZooKeeper 是提供分布式平台 synchronization.But HBase 如何使用 ZooKeeper?

Apache ZooKeeper 是一个用于分布式协调的 client/server 系统,它公开了一个类似于文件系统的接口,其中每个节点(称为 znode)都可以包含数据和一组子节点。每个 znode 都有一个名称,可以使用类似文件系统的路径来识别(例如,/root-znode/sub-znode/my-znode)。

在 Apache HBase 中,ZooKeeper 在 Master 和 RegionServer 之间协调、通信和共享状态。 HBase 的设计策略是仅将 ZooKeeper 用于瞬态数据(即用于协调和状态通信)。因此,如果删除 HBase 的 ZooKeeper 数据,只会影响临时操作 – 数据可以继续写入和读取 to/from HBase.

目前,hbase 客户端通过询问 zookeeper 来找到要连接的集群。客户端唯一需要的配置是连接到的 zk quorum。 Masters 和 hbase 从节点(regionservers)都向 zk 注册自己。如果他们的 znode 消失了,master 或 regionserver 被认为丢失并开始修复

Apache ZooKeeper is a client/server system for distributed coordination that exposes an interface similar to a filesystem, where each node (called a znode) may contain data and a set of children. Each znode has a name and can be identified using a filesystem-like path (for example, /root-znode/sub-znode/my-znode).

In Apache HBase, ZooKeeper coordinates, communicates, and shares state between the Masters and RegionServers. HBase has a design policy of using ZooKeeper only for transient data (that is, for coordination and state communication). Thus if the HBase’s ZooKeeper data is removed, only the transient operations are affected — data can continue to be written and read to/from HBase.

来自 cloudera

在分布式系统中

在分布式系统中 HBase 将 table 拆分为区域服务器 并使用两个特殊的 tables , -ROOT-.META.,以查找托管各种 table 区域的位置。

与 HBase 中的所有 table 一样,-ROOT-.META。也分为 地区。 -ROOT-.META.都是特殊的table; -ROOT- 永远不会分裂成一个以上的区域。 .META. 可以根据需要分成任意多个区域(与其他 table 一样)。

当客户端应用程序想要访问特定行时,它会访问 -ROOT- table 并询问在哪里可以找到负责特定行的区域。 -ROOT- 提供此信息并重定向到 .META. table 的区域。

然后:

如何找到 -ROOT- table?

HBase 系统的入口点由另一个名为 ZooKeeper 的系统提供。

在本地系统中

在本地 DataNode 系统中你不需要 ZooKeeper

结论

ZooKeeper是HBase在分布式Regional系统中用来寻找-ROOT-table。

https://blogs.apache.org/hbase/entry/hbase_who_needs_a_master