HBase如何使用ZooKeeper?

时间:2015-02-16 13:46:01

标签: hadoop hbase bigdata apache-zookeeper

我知道 ZooKeeper 是提供分布式同步的平台。但 HBase 如何使用 ZooKeeper

2 个答案:

答案 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

结论

HBase在分布式区域系统中使用

ZooKeeper来查找-ROOT-表。

请参阅https://blogs.apache.org/hbase/entry/hbase_who_needs_a_master

enter image description here

答案 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蒸发,则主服务器或区域服务器会丢失并开始修复