HBase Master管理功能总结

近段时间,对HBase 的Master节点相关的代码进行了学习,感觉它的设计思路是尽量把master节点做成一个很轻的管理节点。这里很轻的意思就是只做自己该做的一些事,很多不该做的事情都移出去,移给zookeeper,移给regionserver,让自己变得简单。

1. HMaster接口

HMaster类继承了四个接口, HMasterInterface, HMasterRegionInterface, MasterServices, Server。

1.1 HMasterInterface

主要包含了创建表的DDL方法:如createTable, deleteTable, alterTable指令(modifyTable, getAlterStatus, enableTable等),把一个region指派(assign)到某个节点上去。

1.2 HMasterRegionInterface

主要是与regionserver通信的接口,例如:1.regionserver向master注册,初始化起动信息;2. regionserver向master汇报状态,说明它是online状态。

1.3 MasterServices

通过它,master向外部程序开放一些内部的管理对象,提供更加广泛的服务接口,它主要是master内部调用。例如:AssignmentManager对象,MasterFileSystem对象,ServerManager对象等。

2. Assign机制

hbase提供了assign的shell命令。在进行assign分配操作时,主要有以下几个步骤:

  1. 首先要对这个region进行offline操作(包括在master内部RegionState和zookeeper里面)。
  2. 成功做完上述操作后,就会随机找一个节点生成一个regionPlan,如果该region已经存在一个regionPlan,你可以覆盖它,也可以继续采用之前那个regionPlan。
  3. 得到这个regionPlan后,master就通知的regionserver节点,叫它去打开这个region。
  4. regionserver把该region打开成功后,master就会把这个region上线,同时把该region从zookeeper里面的/hbase/unassigned去除掉。

3. move机制

hbase提供了assign的shell命令。在进行move操作时 ,主要有以下几个步骤:

  1. 构造一个regionPlan
  2. assignmentManager做unassigned下线操作,它包括: 在/hbase/unassigned生成一个标为close状态的region节点;通知regionserver关闭该region; 
  3. assignmentManager里面的handleRegion发现该region下线后,就进行重新分配工作;

4. split机制

续... 

猜你喜欢

转载自zcdeng.iteye.com/blog/1885017
今日推荐