HBase原理 | HBase Region 運行狀態學習

HBase爲每個Region維護一個狀態,並將該狀態保留在hbase:meta中。hbase:meta 本身的Region狀態保留在ZooKeeper中。可以在Master Web UI中查看Region的過渡狀態。以下是可能的Region狀態列表。

file

1. 狀態機中包括下面幾種狀態:

  • offline:region離線沒有開啓。

  • opening:region正在被打開。

  • open:region正在打開,並且region server通知了master。

  • failed_open:regionserver打開失敗。

  • closing:region正在被關閉。

  • closed:regionserver正在關閉,並且已經通知了master。

  • failed_close:regionserver關閉失敗了。

  • splitting:region server通知master,region正在被切分。

  • split:region server通知master,region已經被切分完了。

  • spliting_new:region是切分過程中新建的文件。

  • merging:regionserver通知master region正在合併。

  • merged:regionserver通知master region合併完了。

  • merging_new:region是合併新建出來的。

2. 不同的顏色是不同含義:

  • 棕色:離線狀態,屬於一種短暫的瞬間狀態(比如關閉後開啓的中間狀態)、停止狀態或者初始化的時候的狀態。

  • 綠色:正常的狀態,可以支持請求訪問。

  • 藍色:短暫的狀態。

  • 紅色:失敗。

  • 黃色:合併或者切分的狀態。

  • 灰色:剛開始的狀態。

3. 各個序號代表不同的操作場景:

  • Master向region server發起region從offline到openning的狀態請求,regionserver如果沒有收到,master會嘗試重試幾次。RegionServer接收到請求後,regin狀態變成opening

  • 如果Master發起的open請求超過次數,那麼無論region server是否已經打開region,master都會命令region server關閉文件,狀態變爲closing。

  • 當region server打開region後,會嘗試通知master,讓他把region狀態修改爲open,並通知regsion server。這樣region才能變爲open狀態。

  • 如果region server打開四百,會嘗試通知master。master會把region的狀態變更爲closed,並且嘗試去其他的region server打開region

  • 如果master嘗試幾次後,都沒有打開region,就會把狀態變更爲failed_open

  • master通知region server關閉region,如果沒有反應,會重試

  • 如果region server沒有在線,會拋出異常。然後region的狀態會變成closing

  • 如果region server在線,但是好幾次都沒響應,就會更新狀態爲failed_close

  • 如果region server收到請求,並且關閉了region,那麼會通知master把region狀態修改爲closed。並且把region分配給其他的server

  • 在分配之前,master會先把region從closed狀態轉換爲offline

  • 如果region server正在切分region,會通知mastere。master把region狀態由open變爲splitting,並且把新增兩個region的信息,這兩個region都是splitting_new狀態

  • 如果region切分成功,當前的region狀態從splitting變成split;新增的兩個region狀態從splitting_new變成open

  • 如果切分失敗,狀態從splitting回到open,兩個region也從splitting_new變成offline

  • 如果region server想要合併兩個region,那麼也會先通知master。master把兩個region從open變成merging,然後增加一個新的region,狀態爲merging_new

  • 如果合併成功, 舊的region從merging變爲merged,新的region從merging_new變爲open

  • 如果合併失敗,region的狀態從merging變回open,新建的一個region狀態又變成offline

  • 如果管理員通過hbase shell操作分配region,master會嘗試把失敗的狀態變成close

4. 參考

http://hbase.apache.org/2.2/book.html#regions.arch

掃描二維碼關注博主公衆號

轉載請註明出處!歡迎關注本人微信公衆號【HBase工作筆記】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章