相关文章链接:
http://blog.csdn.net/hanhuili/article/details/19080583
http://blog.csdn.net/firstephen/article/details/9256715
http://xxniao.iteye.com/blog/2195200
1、HMaster自身构造函数
1.1、获取当前运行HMaster的机器地址
1.2、生成ZKWatcher对象,管理如下几个ZNode节点
baseZNode "/hbase"
rsZNode "/hbase/rs"
drainingZNode "/hbase/draining"
assignmentZNode "/hbase/unassigned"
tableZNode "/hbase/table"
splitLogZNode "/hbase/splitlog"
schemaZNode "/hbase/schema"
2、生成ActiveMasterManager对象,等待自身成为active master,并在ZNode中创建节点/hbase/master
3、生成AssignmentManager
4、生成LoadBalancer
5、生成RegionserverTracker
6、等待RegionServer的注册
7、splitLogAfterStartup
HMaster的整体结构
一个master包含如下部分:
1.对外的接口
RPC服务
jetty web服务
Master MBean
其中RPC服务包括了若干listener,reader,以及handler线程(IPC Handler和用于replication的IPC Handler)
2.执行服务
都是一些线程池,当有任务出现时就就会交给这些类来处理
这些线程有
MASTER_SERVER_OPERATIONS
MASTER_META_SERVER_OPERATIONS
MASTER_CLOSE_REGION
MASTER_OPEN_REGION
MASTER_TABLE_OPERATIONS
相关的hanlder有:
OpenRegionHandler
ClosedRegionHandler
ServerShutdownHandler
MetaServerShutdownHandler
DeleteTableHandler
DisableTableHandler
EnableTableHandler
ModifyTableHandler
CreateTableHandler
Executor Service
Event
Event Handler
Threads
(Default)
Master Open Region
RS_ZK_REGION_OPENED
OpenRegionHandler
5
Master Close Region
RS_ZK_REGION_CLOSED
ClosedRegionHandler
5
Master Server Operations
RS_ZK_REGION_SPLITM_SERVER_SHUTDOWN
SplitRegionHandlerServerShutdownHandler
3
Master Meta Server Operations
M_META_SERVER_SHUTDOWN
MetaServerShutdownHandler
5
Master Table Operations
C_M_DELETE_TABLE C_M_DISABLE_TABLE C_M_ENABLE_TABLE C_M_MODIFY_TABLE C_M_CREATE_TABLE
DeleteTableHandler DisableTableHandler EnableTableHandler ModifyTableHandler CreateTableHandler
1
3.和zookeeper相关的线程
Java代码
1.ActiveMasterManager 会在ZK中创建/hbase/master短暂节点,master将其信息记录到这个节点下 如果是备份的master会在这里阻塞,直到这个节点为空 2.RegionServerTracker 用于监控region server,通过监控ZK的/hbase/rs节点,获取region server的状态 当region server上线或者下线,ZK都会触发通知事件 3.DrainingServerTracker 没太明白,貌似是处理RS增加和删除事件用的 4.CatalogTracker 用来监控META表和ROOT表 5.ClusterStatusTracker 用于监控ZK的/shutdown节点,监控是否有机器宕机了 6.AssignmentManager 用于管理和分配region的 7.RootRegionTracker 用于管理和监控/root-region-server 节点的 8.LoadBalancer 用于平衡各个regoin server上的region 9.MetaNodeTracker 监控/unassigned 节点,分配那些未在META表中存在的region 此外在 org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher类中还负责管理一些ZK节点 baseZNode /hbase assignmentZNode /unassigned rsZNode /rs drainingZNode /draining masterTableZNode /table masterTableZNode92 /table92 (用于hbase0.92版本) splitLogZNode /splitlog backupMasterAddressesZNode /backup-masters clusterStateZNode /shutdown masterAddressZNode /master clusterIdZNode /hbaseid
ZK监听相关的类图
4.文件接口和其他
MasterFileSystem
用于创建META表和ROOT表,.oldlog目录,hbase.version文件等
LogCleaner
用于定期的清理.oldlog目录中的内容
HFileCleaner
用于定期清理归档目录下的内容
其他包括后台线程如LogCleaner和HFileCleaner等
ServerManager 维护一个在线和下线的RS列表
Balancer 用于执行region均衡的后台线程
