这里主要从源码分析一下ResourceManager的main方法主要做了哪些事情:
main方法中,主要就是下面这段代码
- //获取配置信息
- Configuration conf = new YarnConfiguration();
- //实例化一个资源管理器
- ResourceManager resourceManager = new ResourceManager();
- //关闭的钩子程序
- ShutdownHookManager.get().addShutdownHook(
- new CompositeServiceShutdownHook(resourceManager),
- SHUTDOWN_HOOK_PRIORITY);
- //HTTP策略(是否或者仅支持https),默认只支持HTTP
- setHttpPolicy(conf);
- //初始化核心方法
- resourceManager.init(conf);
- //启动核心方法
- resourceManager.start();
其中最核心的就是resourceManager.init(conf)和resourceManager.start(),先看
resourceManager.init(conf),其具体逻辑在AbstractService.init中,该方法主要的逻辑是记录
RM的生存周期状态,初始化配置信息,然后再调用和resourceManager.serviceInit方法,该方法是RM的核心方法之一
该方法主要将其13个核心服务(如AMLivelinessMonitor、ApplicationMasterService等)初始化,然后将这些服务保存到服务列表serviceList中
resourceManager.start()和init方法类似,其逻辑在AbstractService.start中,在该方法中再调用.ResourceManager.serviceStart,该方法主要是启动之前初始化的服务,启动RM的WEB服务,使RM能够正式对外提供服务。