HBase Master HA高可用
HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。
所以这里要配置HBase高可用的话,只需要启动两个HMaster,让Zookeeper自己去选择一个Master Acitve。
HBase配置:
在$HBASE_HOME/conf目录下
1.hbase-site.xml
export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode" export JAVA_HOME=/usr/java/jdk1.7.0_60 export HBASE_MANAGES_ZK=false export HADOOP_HOME=/data/hadoop-2.6.0 export HBASE_LOG_DIR=/data/hadoop/hbase/logs
一个分布式运行的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
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://appcluster/hbase</value> <description>The directory shared by RegionServers.</description> </property> <property> <name>hbase.master</name> <value>60000</value><!--这里注意了,只需端口即可,不必再写主机名称了!--> </property> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop001,hadoop002,hadoop003</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/data/hadoop/zookeeper</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.tmp.dir</name> <value>/data/hadoop/hbase/tmp</value> </property> </configuration>
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
9832 HRegionServer 8923 QuorumPeerMain 9379 NodeManager 10495 Jps 9197 DataNode 9622 ResourceManager 9006 JournalNode 10436 NameNode 9552 DFSZKFailoverController
在某regionserver上启动Hmaster
hbase-daemon.sh start master
jps:
9832 HRegionServer 8923 QuorumPeerMain 9379 NodeManager 10495 Jps 9197 DataNode 9622 ResourceManager 9006 JournalNode 10005 HMaster 10436 NameNode 9552 DFSZKFailoverController
这个时候就可以看到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了