HBase 如何使用 ZooKeeper?
Posted
技术标签:
【中文标题】HBase 如何使用 ZooKeeper?【英文标题】:How HBase uses ZooKeper? 【发布时间】:2015-02-16 13:46:01 【问题描述】:我知道ZooKeper是提供分布式同步的平台。但是HBase是如何使用ZooKeper的呢?
【问题讨论】:
【参考方案1】:Apache ZooKeeper 是一个用于分布式的客户端/服务器系统 公开类似于文件系统的接口的协调,其中 每个节点(称为 znode)可能包含数据和一组子节点。 每个 znode 都有一个名称,并且可以使用类似文件系统的方式进行识别 路径(例如,/root-znode/sub-znode/my-znode)。
在 Apache HBase 中,ZooKeeper 协调、通信和共享状态 在 Masters 和 RegionServers 之间。 HBase 的设计策略是 仅将 ZooKeeper 用于瞬态数据(即,用于协调和 国家通讯)。因此,如果 HBase 的 ZooKeeper 数据被删除, 只有瞬态操作受到影响——数据可以继续 向/从 HBase 写入和读取。
来自cloudera
在分布式系统中
在分布式系统中HBase 将表拆分为区域服务器并使用两个特殊表-ROOT-
和.META.
来查找托管各种表的区域的位置。
与 HBase 中的所有表一样,-ROOT-
和 .META
。也分为
地区。 -ROOT-
和 .META.
都是特殊表; -ROOT-
永远不会分裂成多个区域。 .META.
可以根据需要拆分为多个区域(与其他表一样)。
当客户端应用程序想要访问特定行时,它会访问-ROOT-
表并询问在哪里可以找到负责特定行的区域。 -ROOT-
提供此信息并重定向到 .META.
表的区域。
然后:
如何找到-ROOT-
表?
HBase 系统的入口点由另一个名为 ZooKeeper 的系统提供。
在本地系统中
在本地 DataNode 系统中,您不需要 ZooKeeper
结论
ZooKeeper 被 HBase 在分布式区域系统中用于查找 -ROOT-
表。
见https://blogs.apache.org/hbase/entry/hbase_who_needs_a_master
【讨论】:
【参考方案2】:Apache ZooKeeper 是一个用于分布式协调的客户端/服务器系统,它公开了一个类似于文件系统的接口,其中每个节点(称为 znode)可能包含数据和一组子节点。每个 znode 都有一个名称,并且可以使用类似文件系统的路径(例如,/root-znode/sub-znode/my-znode)来标识。
在 Apache HBase 中,ZooKeeper 在 Master 和 RegionServer 之间协调、通信和共享状态。 HBase 的设计策略是仅将 ZooKeeper 用于瞬态数据(即用于协调和状态通信)。因此,如果 HBase 的 ZooKeeper 数据被删除,只有临时操作会受到影响——数据可以继续写入 HBase 或从 HBase 读取数据。
目前,hbase 客户端通过询问 zookeeper 来找到要连接的集群。客户端需要的唯一配置是要连接的 zk quorum。主节点和 hbase 从节点(regionservers)都向 zk 注册。如果他们的 znode 消失,则认为 master 或 regionserver 丢失并开始修复
【讨论】:
以上是关于HBase 如何使用 ZooKeeper?的主要内容,如果未能解决你的问题,请参考以下文章