HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。
所以这里要配置HBase高可用的话,只需要启动两个HMaster,让Zookeeper自己去选择一个Master Acitve。
HBase配置:
在$HBASE_HOME/conf目录下
1.配置HBASE环境
一个分布式运行的Hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeep集群。这个集群会随着Hbase的启动而启动。当然,你也可以自己管理一个zookeeper集群,但需要配置Hbase。你需要修改HBASE_MANAGES_ZK 来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.
让Hbase使用一个现有的不被Hbase托管的Zookeep集群,需要设置 HBASE_MANAGES_ZK 属性为 false
2.hbase-site.xml
3.regionservers
添加regionserver的hostname
HBase启动:
在hadoop001上输入启动命令
start-hbase.sh
终端执行jps指令查看进程:
master (因为之前启动了Hadoop HA,所以会看到很多进程)
23703 NameNode
23968 ResourceManager
24132 DFSZKFailoverController
23813 DataNode
24857 HRegionServer
24723 HMaster
23428 QuorumPeerMain
23522 JournalNode
25448 Jps
24070 NodeManager
regionserver
终端执行jps指令查看进程:
9832 HRegionServer
8923 QuorumPeerMain
9379 NodeManager
9197 DataNode
9622 ResourceManager
9006 JournalNode
10436 NameNode
9552 DFSZKFailoverController
10495 Jps
在某regionserver上启动Hmaster
hbase-daemon.sh start master
终端执行jps指令查看进程:
9832 HRegionServer
8923 QuorumPeerMain
9379 NodeManager
9197 DataNode
9622 ResourceManager
9006 JournalNode
10005 HMaster
10436 NameNode
9552 DFSZKFailoverController
10495 Jps
这个时候就可以看到HMaster启动了。
如何区分哪个是Active哪个是standby呢,看log
hbase的log中可以看到
2015-08-07 14:00:14,765 INFO [hadoop002:60000.activeMasterManager] master.ActiveMasterManager: Another master is the active master, hadoop001,60000,1438927191790; waiting to become the next active master
这样就可以判断哪台是Active了