hbase需要zookeeper
分布式Apache HBase安装取决于正在运行的ZooKeeper集群。所有参与的节点和客户端都需要能够访问正在运行的ZooKeeper集群。默认情况下,Apache HBase为您管理ZooKeeper“集群”。作为HBase启动/停止过程的一部分,它将启动和停止ZooKeeper集群。您还可以独立于HBase管理ZooKeeper集成,只需将HBase指向它应使用的集群即可。要切换ZooKeeper的HBase管理,请使用conf / hbase-env.sh中的HBASE_MANAGES_ZK变量。该变量默认为true,它告诉HBase是否作为HBase启动/停止的一部分来启动/停止ZooKeeper集成服务器。
当HBase管理ZooKeeper集合时,您可以直接在conf / hbase-site.xml中指定ZooKeeper配置。通过使用hbase.zookeeper.property开头ZooKeeper选项名称,可以在HBase hbase-site.xml XML配置文件中将ZooKeeper配置选项设置为属性。例如,可以通过设置hbase.zookeeper.property.clientPort属性来更改ZooKeeper中的clientPort设置。
我应该运行多少个ZooKeeper?
您可以运行仅包含1个节点的ZooKeeper集群,但在生产中,建议您运行3、5或7台计算机的ZooKeeper集群,集群拥有的成员越多,则集群对主机故障的容忍度就越高。另外,运行奇数台计算机。在ZooKeeper中,支持偶数个对等体,但是通常不使用它,因为偶数大小的集合成比例地需要比奇数大小的集合更多的对等体来形成仲裁。例如,一个具有4个对等体的合奏需要3个成员以形成仲裁,而具有5个对等体的合奏也需要3个形成仲裁。因此,集合5允许2个对等方发生故障,因此比4集合的容错性更高,后者仅允许1个Down Peer。
为每个ZooKeeper服务器提供大约1GB的RAM,并为它提供自己的专用磁盘(最好使用专用磁盘来确保ZooKeeper性能良好,对于负载非常重的群集,请在与RegionServer(DataNode和TaskTrackers)不同的计算机上运行ZooKeeper服务器。
例如,要让HBase在节点rs {1,2,3,4,5} .example.com上绑定到端口2222(默认值为2181)上管理ZooKeeper仲裁,请确保在conf中将HBASE_MANAGE_ZK注释掉或设置为true /hbase-env.sh,然后编辑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>
</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
要将HBase指向不由HBase管理的现有ZooKeeper群集,请将conf / hbase-env.sh
中的HBASE_MANAGES_ZK
设置为false