我知道 ZooKeeper 是提供分布式同步的平台。但 HBase 如何使用 ZooKeeper ?
答案 0 :(得分:3)
Apache ZooKeeper是分布式的客户端/服务器系统 公开类似于文件系统的接口的协调,其中 每个节点(称为znode)可能包含数据和一组子节点。 每个znode都有一个名称,可以使用类似文件系统进行标识 path(例如,/ 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来查找-ROOT-
表。
请参阅https://blogs.apache.org/hbase/entry/hbase_who_needs_a_master
答案 1 :(得分:1)
Apache ZooKeeper是用于分布式协调的客户端/服务器系统,它公开类似于文件系统的接口,其中每个节点(称为znode)可能包含数据和一组子节点。每个znode都有一个名称,可以使用类似文件系统的路径进行标识(例如,/ root-znode / sub-znode / my-znode)。
在Apache HBase中,ZooKeeper在Masters和RegionServers之间协调,通信和共享状态。 HBase的设计策略是仅将ZooKeeper用于瞬态数据(即用于协调和状态通信)。因此,如果删除HBase的ZooKeeper数据,只会影响瞬态操作 - 可以继续写入数据并从HBase读取数据。
目前,hbase客户端通过询问zookeeper找到要连接的集群。客户端需要的唯一配置是要连接的zk仲裁。主站和hbase从站节点(区域服务器)都使用zk注册自己。如果他们的znode蒸发,则主服务器或区域服务器会丢失并开始修复