分布式Apache HBase安装依赖于正在运行的ZooKeeper集群。Apache HBase默认情况下为您管理ZooKeeper“集群”。它将启动和停止ZooKeeper集合作为HBase启动/停止过程的一部分。你还可以独立于HBase管理ZooKeeper集群,只需要在Hbase的配置文件hbase-env.sh中做一些设置即可。要切换ZooKeeper的HBase管理,请使用conf/hbase-env.sh中的HBASE_MANAGES_ZK变量。 此变量默认为true,告诉HBase是否启动/停止ZooKeeper集合服务器作为HBase启动/停止的一部分。如果为true,这Hbase把zookeeper启动,停止作为自身启动和停止的一部分。如果设置为false,则表示独立的Zookeeper管理。
一、Hbase管理Zookeeper集群
Hbase提供了HBASE_MANAGES_ZK变量来设置是否管理zookeeper集群,默认情况,HBASE_MANAGES_ZK设置为true,
即告诉Hbase把zookeeper启动、停止作为Hbase启动、停止的一部分。
默认情况是注销状态,默认为true
启动hbase:
查看进程,可以看到有HMaster,HQuorumPeer,HRegionServer三个进程
这里的如果设置了hbase.zookeeper.property.clientPort会覆盖默认配置
二、独立的Zookeeper集群管理
如果要将HBase指向现有的ZooKeeper集群(不是由HBase管理的集群),则将conf/hbase-env.sh中的HBASE_MANAGES_ZK设置为false,
如果是独立启动zookeeper集群,那么这里的clientPort必须与zookeeper配置的一致,否则客户端连接的时候会报错。
启动zookeeper
查看进程,可以看到有HMaster,QuorumPeerMain,HRegionServer三个进程
三、两者的区别
- 1、进程名字不一样
HQuorumPeer表示hbase管理的zookeeper
QuorumPeerMain表示zookeeper独立的进程- 2、如果hbase管理zookeeper,则在hbase-site.xml配置文件中,设置的
hbase.zookeeper.property.clientPort,
hbase.zookeeper.property.dataDir将会覆盖zookeeper默认的设置,
而在独立管理zookeeper中,比如我在hbase-site.xml中配置hbase.zookeeper.property.clientPort=2182,但是zookeeper配置的是2181,那么此时通过shell连接hbase时,会报如下错误:
转载请注明:猫头鹰工作室 » Hbase与Zookeeper之间的关系