HBase爲每一個Region維護一個狀態,並將該狀態保留在hbase:meta中。hbase:meta 自己的Region狀態保留在ZooKeeper中。能夠在Master Web UI中查看Region的過渡狀態。如下是可能的Region狀態列表。html
![image image](http://static.javashuo.com/static/loading.gif)
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/b...shell