26

HBase原理 | HBase Region 运行状态学习

 3 years ago
source link: https://segmentfault.com/a/1190000022726782
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

HBase为每个Region维护一个状态,并将该状态保留在hbase:meta中。hbase:meta 本身的Region状态保留在ZooKeeper中。可以在Master Web UI中查看Region的过渡状态。以下是可能的Region状态列表。

YjmuueF.png!web

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...


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK