HMaster UML类图
在HMaster类的构造函数中会实例化ActiveMasterManager类,同时启动HBase的web console。
// Some unit tests don't need a cluster, so no zookeeper at all
if (!conf.getBoolean("hbase.testing.nocluster", false)) {
activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);
//启动web页面
int infoPort = putUpJettyServer();
//
startActiveMasterManager(infoPort);
} else {
activeMasterManager = null;
}
@see startActiveMasterManager 方法,核心方法:
1)首先写入ZK,把本节点作为backup master节点,后续称为active master的时候,就删除ZK中,本节点作为backup master的纪录。
2)一直在while里面循环,直到成为active master.
3) 当成为active master的时候,调用finishActiveMasterInitilization()启动一系列组件。
MasterFileSystem类。
MasterWalManager类。
ServerManager类。管理Region Server。
TableStateManager类。管理管理表状态。
initializeZKBasedSystemTrackers()方法,初始化所有基于ZK的tracker
MasterCoprocessortHost类。为master提供协处理框架和环境。
调用startProcedureExecutor()方法。将服务停止前的wal数据再读出来,以及其他的数据清洗工作。
等待Region Server接入HMaster。不达到指定数目的Region Server连入,就一直阻塞。
启动MasterMetaBootstrap类。用于切分meta日志和分配meta表。
启动FavoredNodesManager类。
等待Region Server完成初始化。
初始化LoadBalancer。
分配 meta region。
更新ZK中表状态。
分配meta副本
MaterQuotaManger类。负责初始化quota表在初次运行,并且提供admin接口操作quota表