hbase-site中的动物园管理员仲裁设置究竟是什么.xml?

2022-09-02 10:08:11

hbase-site中的动物园管理员仲裁设置究竟是什么.xml?


答案 1

hbase-default.xml 中所述,下面是设置:

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

这实际上做了什么,爱德华·J·尹(Edward J. Yoon)在这里已经回答了这个问题。为了清楚起见,我进行了编辑:

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

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

那么,什么是定额,为什么我们需要定额?

根据维基百科,法定人数是处理该小组业务所需的审议机构的最低成员人数。通常,这是预计在那里的大多数人,尽管许多机构可能具有较低或较高的法定人数。

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

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

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

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

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


答案 2

从 hbase 默认值.xml文件:

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

从入门的要求部分:

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

希望有所帮助。


推荐