標籤:
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=falseexport HADOOP_HOME=/data/hadoop-2.6.0export 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 NameNode23968 ResourceManager24132 DFSZKFailoverController23813 DataNode24857 HRegionServer24723 HMaster23428 QuorumPeerMain23522 JournalNode25448 Jps24070 NodeManager
regionserver
9832 HRegionServer8923 QuorumPeerMain9379 NodeManager10495 Jps9197 DataNode9622 ResourceManager9006 JournalNode10436 NameNode9552 DFSZKFailoverController
在某regionserver上啟動Hmaster
hbase-daemon.sh start master
jps:
9832 HRegionServer8923 QuorumPeerMain9379 NodeManager10495 Jps9197 DataNode9622 ResourceManager9006 JournalNode10005 HMaster10436 NameNode9552 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了
HBase 高可用(HA)