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

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

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

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

Edward J. Yoon 在这里回答了这个实际做法。 为了清楚起见,我需要进行编辑:

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

今天,我更多地调查了Zookeeper项目的paxos和动态仲裁function,以便更好地命名类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是开展该组业务所必需的审议机构的最少成员。 通常情况下,这是预期在那里的大多数人,尽管许多机构的法定人数可能更低或更高。

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

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

如果我错误地翻译了他试图呈现的概念,你也应该阅读原始版本 。

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

这为Hadoop的最终一致性模型增加了更多粒度。 与此同时,HBase目前正在进一步整合Zookeeper及其代码。

从hbase-default.xml文件:

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

从入门指南部分:

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

希望有所帮助。