hbase-site.xml中的zookeeper仲裁设置究竟是什么?

时间:2010-12-14 09:27:19

标签: java hadoop hbase apache-zookeeper

hbase-site.xml中的zookeeper仲裁设置究竟是什么?

2 个答案:

答案 0 :(得分:21)

hbase-default.xml,中所述,这里是设置:

  

ZooKeeper Quorum中逗号分隔的服务器列表。例如,“host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”。默认情况下,对于本地和伪分布式操作模式,将其设置为localhost。对于完全分布式设置,应将其设置为ZooKeeper仲裁服务器的完整列表。如果在hbase-env.sh中设置了HBASE_MANAGES_ZK,则这是我们将启动/停止ZooKeeper的服务器列表。

Edward J. Yoon已经回答了做了什么 <{em} here.为了清楚起见,我进行了编辑:

  

Apache Zookeeper是分布式应用程序的协调服务,如Google的Chubby。许多项目使用zookeeper,我们(Apache Hama)也使用zookeeper进行批量同步并行计算框架的屏障同步。

     

今天,我更多地调查了Zookeeper项目的paxos和动态仲裁功能,以便更好地命名类org.apache.hama.zookeeper.QuorumPeer。由于文档不够(http://hadoop.apache.org/zookeeper/docs/r3.0.0/api/index.html),我不理解“法定人数”的含义,因为这个术语对我来说有些奇怪。但是,“org.apache.hama.zookeeper.QuorumPeer”是正确的名称!的xD

     

那么,Quorum是什么?为什么我们需要Quorum?

     

根据维基百科,Quorum是开展该组业务所必需的审议机构的最低成员人数。通常情况下,这是预期在那里的大多数人,尽管许多机构的法定人数可能更低或更高。

     

如您所知,容错机制是分布式系统的重要功能之一。 Quorum算法用于防止裂脑情况。当发生裂脑情况时,根据Quorum算法,zookeeper确定“主分区”和“辅助分区”。然后,主组中的服务器接收并处理用户的请求,辅助组中的服务器变为只读。

     

这个系统什么时候从裂脑状态恢复?当它们再次合并到一个分区时。在内部,zookeeper使用原子广播协议而不是Paxos。

如果我误译了他试图呈现的概念,你也应该read the original version,

我对Apache Zookeeper中的仲裁机制的理解是它明确定义了跨多个预定义主机的复制仲裁。如果不满足此仲裁,则不同意的分区将拆分为辅助分区,直到Zookeeper可以将其与主分区重新集成。

这为Hadoop的eventual consistency模型增加了更多粒度。与此同时,HBase目前正处于further integrating Zookeeper with its code.

的过程中

答案 1 :(得分:5)

来自hbase-default.xml文件:

  

ZooKeeper Quorum中逗号分隔的服务器列表。       例如,“host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”。       默认情况下,对于本地和伪分布式模式,它设置为localhost       的操作。对于完全分布式设置,应将其设置为完整       ZooKeeper仲裁服务器列表。如果在hbase-env.sh中设置了HBASE_MANAGES_ZK       这是我们将启动/停止ZooKeeper的服务器列表。

从“入门指南”部分开始:

  

HBase依赖于ZooKeeper,版本为0.20.0。 HBase保留其根表的位置,当前主服务器的位置,以及当前参与ZooKeeper中的集群的区域。客户端和服务器现在必须知道他们的ZooKeeper Quorum位置才能执行任何其他操作(通常他们从CLASSPATH上提供的配置中获取此信息)。默认情况下,HBase将为您管理单个ZooKeeper实例。在独立模式和伪分布式模式下,这通常就足够了,但对于完全分布式模式,您应该配置ZooKeeper仲裁(下面有更多信息)。

希望有所帮助。