1. 程式人生 > >HBase(08)——HBase Region管理及容錯性

HBase(08)——HBase Region管理及容錯性

Region管理

1、region分配

任何時刻,一個region只能分配給一個region server。 master記錄了當前有哪些可用的region server。以及當前哪些region分配給了哪些region server,哪些region還沒有分配。 當需要分配新的region,並且有一個region server上有可用空間時,master就給這個region server傳送一個裝載請求,把region分配給這個region server。region server得到請求後,就開始對此region提供服務。

2、region server上線

master使用zookeeper來跟蹤region server狀態。 當某個region server啟動時,會首先在zookeeper上的server目錄下建立代表自己的znode。 由於master訂閱了server目錄上的變更訊息,當server目錄下的檔案出現新增或刪除操作時,master可以得到來自zookeeper的實時通知。因此一旦region server上線,master能馬上得到訊息。

3、region server下線

當region server下線時,它和zookeeper的會話斷開,zookeeper會自動釋放代表這臺server的檔案上的獨佔鎖。master獲得zookeeper的訊息後就可以確定: ——region server和zookeeper之間的網路斷開了。 ——region server掛了。 也就是region server無法繼續為它的region提供服務了,此時master會刪除server目錄中代表這臺region server的znode資料,並將這臺region server的region分配給其它活著的region server。

Master工作機制

1、master上線

從zookeeper上獲取唯一一個代表active master的鎖,用來阻止其它master成為活著的master。 掃描zookeeper上的servermaster啟動進行以下步驟: 通過父節點,獲得當前可用的region server列表。 和每個region server進行通訊,獲得當前已分配的region和region server的對應關係。 掃描.META.region的集合,計算得到當前還未分配的region,將他們放入待分配region列表。

2、master下線

由於master只維護表和region的元資料,而不參與表資料IO的過程,master下線僅導致所有元資料的修改被凍結(無法建立刪除表,無法修改表的schema,無法進行region的負載均衡,無法處理region 上下線,無法進行region的合併,唯一例外的是region的split可以正常進行,因為只有region server參與),表的資料讀寫還可以正常進行。因此master下線短時間內對整個hbase叢集沒有影響。

HBase容錯性

Zookeeper容錯:

Zookeeper是一個可靠地服務,一般配置3或5個Zookeeper例項

Master容錯:

Zookeeper會重新選擇一個新的Master 無Master過程中,資料讀取仍照常進行; 無Master過程中,負載均衡無法進行;

RegionServer容錯:

定時向Zookeeper彙報心跳,如果一旦時間內未出現心跳,Master將該RegionServer上的Region重新分配到其他RegionServer上,失效伺服器上“預寫”日誌由主伺服器進行分割並派送給新的RegionServer