HMaster功能与启动

相关文章链接:

http://blog.csdn.net/hanhuili/article/details/19080583

http://blog.csdn.net/firstephen/article/details/9256715

http://xxniao.iteye.com/blog/2195200

 

1HMaster自身构造函数

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服务包括了若干listenerreader,以及handler线程(IPC Handler用于replicationIPC 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. 1.ActiveMasterManager  
  1. 会在ZK中创建/hbase/master短暂节点,master将其信息记录到这个节点下  
  1. 如果是备份的master会在这里阻塞,直到这个节点为空  
  1.   
  1. 2.RegionServerTracker  
  1. 用于监控region server,通过监控ZK/hbase/rs节点,获取region server的状态  
  1. 当region server上线或者下线,ZK都会触发通知事件  
  2.   
  1. 3.DrainingServerTracker  
  1. 没太明白,貌似是处理RS增加和删除事件用的  
  2.   
  1. 4.CatalogTracker  
  1. 用来监控META表和ROOT表  
  2.   
  1. 5.ClusterStatusTracker  
  1. 用于监控ZK的/shutdown节点,监控是否有机器宕机了  
  2.   
  1. 6.AssignmentManager  
  1. 用于管理和分配region的  
  2.   
  1. 7.RootRegionTracker  
  1. 用于管理和监控/root-region-server 节点的  
  2.   
  1. 8.LoadBalancer  
  1. 用于平衡各个regoin server上的region  
  2.   
  1. 9.MetaNodeTracker  
  1. 监控/unassigned 节点,分配那些未在META表中存在的region  
  2.   
  3. 此外在 org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher类中还负责管理一些ZK节点  
  4. baseZNode           /hbase  
  5. assignmentZNode         /unassigned  
  1. rsZNode             /rs  
  1. drainingZNode           /draining  
  2. masterTableZNode        /table  
  3. masterTableZNode92      /table92    (用于hbase0.92版本)  
  1. splitLogZNode           /splitlog  
  1. backupMasterAddressesZNode  /backup-masters  
  1. clusterStateZNode       /shutdown  
  2. masterAddressZNode      /master  
  3. clusterIdZNode              /hbaseid  

 

ZK监听相关的类图

4.文件接口和其他

MasterFileSystem

用于创建META表和ROOT表,.oldlog目录,hbase.version文件等

 

LogCleaner

用于定期的清理.oldlog目录中的内容

 

HFileCleaner

用于定期清理归档目录下的内容

 

其他包括后台线程如LogCleanerHFileCleaner

ServerManager 维护一个在线和下线的RS列表

Balancer 用于执行region均衡的后台线程

你可能感兴趣的:(做过的技术)