实验环境
master:192.168.0.160
slave1:192.168.0.161
zookeeper:192.168.0.161
hadoop版本:2.6.5
主机操作系统:ubuntu-16.04
Hbase HA实现原理
HMaster HA不需要额外的配置,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。
所以这里要配置Hbase高可用的话,只需要启动两个HMaster,让Zookeeper自己去选择一个Master Active。
在启动之前需要搭建好Hbase完全分布式环境,可以参考:
https://blog.csdn.net/cl2010abc/article/details/80822553
HA启动与验证
-
当集群启动成功后,master节点上会启动一个HMaster进程,我们还需要在slave1节点上启动一个HMaster进程。
[hadoop@slave1 hbase-1.2.6]$ ./bin/hbase-daemon.sh start master
starting master, logging to /home/hadoop/software/hbase-1.2.6/logs/hbase-hadoop-master-slave1.out
Java HotSpot™ 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot™ 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 -
通过web ui查看两个HMaster进程的工作状态
从上图中可以看出master节点上的HMaster进程被选为真正的"master"。 -
查看Hbase在zookeeper注册的节点信息
# 查看master节点信息 [zk: localhost:2181(CONNECTED) 15] get /hbase/master �master:160001䛈MEPBUF master�}����,�} cZxid = 0x28fb ctime = Sun Jul 22 20:04:51 PDT 2018 mZxid = 0x28fb mtime = Sun Jul 22 20:04:51 PDT 2018 pZxid = 0x28fb cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x164c4fb83eb0031 dataLength = 54 numChildren = 0 # 查看backup-masters节点 [zk: localhost:2181(CONNECTED) 29] ls /hbase/backup-masters [slave1,16000,1532316403408]
从zookeeper注册的节点信息来看,master节点上HMaster为主master,slave1上的为备用master。
-
模拟HMaster意外挂掉,备用master能否成功切换。
kill 掉master上的HMaster进程。[hadoop@master software]$ jps 4002 HRegionServer 2839 DataNode 5897 Main 3034 SecondaryNameNode 6714 Jps 2730 NameNode 6223 HMaster [hadoop@master software]$ kill -9 6223
查看slave1上HMaster是否切换为主HMaster
从图中可以看出HMaster已成功切换。
总结
该文演示了Hbase HA的使用与自动故障切换。