【HBase】start master 與 start master --backup 的區別

楊奇龍發表於2012-02-01
   我們都知道hbase 叢集中通常有一個master 節點,多個region server節點,為了防止HBase 叢集中master的單點故障,可以向叢集中新增一個slave master,這些新新增的master 會分佈在不同的物理機器上,因此以最壞的情形來看,當前執行master的那臺物理機down了,整個系統可以由backup的 master 來接管!
   在介紹如何新增master 節點之前,我們先了解一下在hbase叢集中master是如何產生的.master 程式使用Zookeeper 來判斷哪一個是當前活動的master:所有的master 競爭建立Zookeeper 中有一個專用的znode,第一個成功建立znode的成為叢集中的當前活動的master ! 
   以上場景會發生在整個叢集啟動時,如果存在多個master 程式同時啟動,則成功建立znode的成為叢集中的master。所有其他未成功的節點則simply loop around  the znode並且等待master建立的znode消失,並觸發重新競爭。下面的是來自《HBase: The Definitive Guide》的文章(有些疑問)
   “ The /hbase/master znode is ephemeral, (短暫 的?zookeeper 機制)and is the same kind the region servers use to
report their presence. When the master process that created the znode fails, ZooKeeper will notice the end of the session with that server and remove the znode accordingly, triggering the election process. (既然建立失敗,又怎麼刪除?)” 
    在完全分散式hbase叢集上啟動master 需要滿足它的配置要和叢集中其他節點的配置一樣。叢集中的master節點通常和叢集中的其他節點都共用一套配置資訊。一旦你確定系統的配置資訊已經配置正確,就可以執行如下語句:
./bin/hbase-daemon.sh start master
日誌如下:
2012-02-01 15:39:42,552 INFO org.apache.hadoop.hbase.metrics: new MBeanInfo
2012-02-01 15:39:42,553 INFO org.apache.hadoop.hbase.metrics: new MBeanInfo
2012-02-01 15:39:42,553 INFO org.apache.hadoop.hbase.master.metrics.MasterMetrics: Initialized
2012-02-01 15:39:42,575 INFO org.apache.hadoop.hbase.master.ActiveMasterManager: Another master is the active master, rac3:60000; waiting to become the next active master
   假設叢集中已經有了一個master正在執行,執行上述命令將會帶來如下情況:新起來的master會等待當前的znode被刪除。如果你想要在一個 以自動執行的方式(in an automated fashion )啟動多個master並且指定一個特定的機器作為當前master的宿主機。可以使用如下命令:
./bin/hbase-daemon.sh start master --backup
使用 --backup 引數的啟動方式,日誌資訊裡多了紅色部分:
2012-02-01 15:57:05,413 INFO org.apache.hadoop.hbase.metrics: new MBeanInfo
2012-02-01 15:57:05,413 INFO org.apache.hadoop.hbase.master.metrics.MasterMetrics: Initialized
2012-02-01 15:57:05,414 DEBUG org.apache.hadoop.hbase.master.HMaster: HMaster started in backup mode.Stalling(停轉)until master znode is written.##可能意思翻譯不準,就是以空閒模式等待當前的master down 機!
2012-02-01 15:57:05,425 INFO org.apache.hadoop.hbase.master.ActiveMasterManager: Another master is the active master, rac1:60000; waiting to become the next active master
   使用帶--backup 引數啟動的master 將會等待特定的master 程式比如: 使用start-hbase.sh  指令碼啟動的或者不帶--backup引數的hbase-daemon.sh start master 命令啟動的master 在Zookeeper中建立 /hbase/master znode。一旦特定的master 程式建立znode成功,由於現在叢集中已經有了master了,所以那些以--backkup 模式啟動的master則會進入一個空閒模式!
總結:
   其實兩種啟動方式的差別是在於對zookeeper上的master 建立的znode 的處理方式和之後進入的狀態。start master是等待znode被刪除,而start master --backup 是以休眠的方式等待znode 被刪除。
------------------------------------------------
目前只研究或者理解到這裡,如有錯誤,請各位朋友指正。。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-715469/,如需轉載,請註明出處,否則將追究法律責任。

相關文章