ps:发现想写明白确实不太容易、以下会慢慢完善
Hmaster启动会先执行Hmaster 构造函数,看看它都做了什么:
初始化conf、rpcServer、isa(InetAddressServer)、ServerName、zookeep、rpcServer start 、metrics
如果应用security注意以下两点:
login the zookeeper client principal (if using security)
initialize server principal (if using secure Hadoop)
rpcServer start
this.rpcServer.startThreads();
包括 responder.start() 在随后的RPC中会进一步讲解 、listener.start()、初始化handler等
初始metrics,metric底层主要使用hadoop metrics
-----------------------上面构造函数end----------------
接下来执行Hmaser run方法
设置monitoredTask
启动infoserver也就是master ui
尝试成为活动master(多个master竞争、谁先完成谁就是)
然后完成初始化,主要有以下条目:
1、初始化fileSystemManager 主要做一些文件系统的管理,例如:rootdir tempdir 、fs
初始化splitLogManager 、创建oldlogdir (.oldlog)
2、初始化tableDescriptors 即FSTableDescriptors 表的元数据信息,对应表目录下的 ".tableinfo.000000000x" x随着对表修改而变动
3、在zk中创建保存clusterID的znode并设置值
4、初始化excutorService 这个可以参考上篇文章
5、初始化serverManager
6、初始化所有基于ZK的system tracker
catalogTracker 启动 rootRegionTracker 和 metaNodeTracker
初始化LoadBalance类
初始化AssignmentManager 此类主要作用 管理执行region分配、监控关于region事务的zk事件、当master失败时处理已经存在的regions
regionServerTracker 并将zk中的regionServer加到集合中
drainingServerTracker 同上
初始化 SnapshotManager
初始化 MasterCoprocessorHost
startServiceThread 前一篇文章中对 excutorService有讲解、这里主要就是excutorService的一些初始化、另外Logcleaner 、
获取archiveDir (hfile archive 一般rootdir下 .archive)
初始化HfileCleaner
如果helthCheck不为空的话执行helthCheck
最后rpcServer (HbaseServer)调用openServer 即标记started = true 这样就可以接收请求啦!
------------------------------