Hmaster 启动讲解

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  这样就可以接收请求啦!

     

------------------------------

    


你可能感兴趣的:(Hmaster 启动讲解)