在伪分布安装中,我们将hbase-env.sh
的最后一行解注释export HBASE_MANAGES_ZK=true
,配置文件关于这一条语句的解释是Tell HBase whether it should manage it's own instance of Zookeeper or not.
,也即HBase是否拥有自己的ZooKeeper实例。如果允许的话,一般即为hbase的伪分布式,在节点上zkServer.sh status
的话(查看ZooKeeper 服务器的状态),会发现其既非 follower 也非 leader,而是standalone。
在 HBase 的分布式下,我们不仅需要首先启动hadoop集群(提供hdfs),还需启动ZooKeeper的服务器集群,而不是使用自己的ZooKeeper实例。
我们的集群中有主机名分别为:hadoop0、hadoop1、hadoop2的三个节点、
(1)首先确定集群结构
- 主节点(HMaster):hadoop0
- 从节点(HRegionServer):hadoop1、hadoop2
(2)修改主节点的HBase的相关配置文件
(a)hbase-env.sh
export HBASE_MANAGES_ZK=false
(b) hbase-site.xml
修改属性hbase.zookeeper.quorum,为
hadoop0,hadoop1,hadoop2
,quorum:表示法定人数
,当前集群中允许可作为ZooKeeper集群中的服务器的主机名;(c) regionservers
设置从节点的主机名,则为:
hadoop1 hadoop2
(3)配置文件集群一致性
a) 复制hadoop0节点的hbase文件夹到hadoop1、hadoop2(也即配置文件在集群间要保持一致)
b) 复制hadoop0中的
/etc/profile
到hadoop1、hadoop2,并重新编译(source /etc/profile)
(4)启动
a) 在hadoop0,上启动hadoop集群,
start-all.sh
b) 在三个节点上分别启动ZooKeeper集群,
zkServer.sh start
c) 在hadoop0上启动hbase集群
start-hbase.sh
(5)验证
- 在各节点,使用 jps,查看各自的java进程,hadoop0应有HMaster,hadoop1、hadoop2应有HRegionServer、
- 在浏览器端,在地址栏中输入
hadoop0:60010
,查看相关节点信息。