实验环境
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(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 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:160001MEPBUF
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的使用与自动故障切换。