分布式 Apache HBase 安装依赖于正在运行的 ZooKeeper 集群。所有参与节点和客户端都需要能够访问正在运行的 ZooKeeper 集合。 Apache HBase 默认为您管理 ZooKeeper“集群”。它将启动和停止 ZooKeeper 集合作为 HBase 启动/停止过程的一部分。您还可以独立于 HBase 管理 ZooKeeper 集合,只需将 HBase 指向它应该使用的集群。要切换 ZooKeeper 的 HBase 管理,请使用 conf / hbase-env.sh 中的HBASE_MANAGES_ZK
变量。此变量默认为true
,告诉 HBase 是否启动/停止 ZooKeeper 整体服务器作为 HBase 启动/停止的一部分。
当 HBase 管理 ZooKeeper 集合时,您可以直接在 conf / hbase-site.xml 中指定 ZooKeeper 配置。通过在 ZooKeeper 选项名称前加上hbase.zookeeper.property
,可以将 ZooKeeper 配置选项设置为 HBase hbase-site.xml XML 配置文件中的属性。例如,可以通过设置hbase.zookeeper.property.clientPort
属性来更改 ZooKeeper 中的clientPort
设置。对于 HBase 使用的所有默认值,包括 ZooKeeper 配置,请参见 hbase 默认配置。查找hbase.zookeeper.property
前缀。有关 ZooKeeper 配置的完整列表,请参阅 ZooKeeper 的 zoo.cfg 。 HBase 不附带 zoo.cfg ,因此您需要在适当的 ZooKeeper 下载中浏览 conf 目录。
您必须至少使用hbase.zookeeper.quorum
属性列出 hbase-site.xml 中的整体服务器。此属性默认为localhost
上的单个集合成员,它不适用于完全分布式 HBase。 (它仅绑定到本地计算机,远程客户端将无法连接)。
例如,让 HBase 管理节点 rs {1,2,3,4,5} .example.com 上的 ZooKeeper 仲裁,绑定到端口 2222(默认为 2181),确保HBASE_MANAGE_ZK
为在 conf / hbase-env.sh 中注释掉或设置为true
,然后编辑 conf / hbase-site.xml 并设置hbase.zookeeper.property.clientPort
和hbase.zookeeper.quorum
。您还应该将hbase.zookeeper.property.dataDir
设置为默认值以外的值,因为默认情况下 ZooKeeper 会在 / tmp 下保留数据,这通常会在系统重启时清除。在下面的示例中,我们将 ZooKeeper 持久保存到 / user / local / zookeeper 。
<configuration>
...
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2222</value>
<description>Property from ZooKeeper's config zoo.cfg.
The port at which the clients will connect.
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>rs1.example.com,rs2.example.com,rs3.example.com,rs4.example.com,rs5.example.com</value>
<description>Comma separated list of servers in the ZooKeeper Quorum.
For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
By default this is set to localhost for local and pseudo-distributed modes
of operation. For a fully-distributed setup, this should be set to a full
list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
this is the list of servers which we will start/stop ZooKeeper on.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
...
</configuration>