1.概览
以下介绍的NodeManager是如何启动和注册各个服务的
主要涉及的Java文件
hadoop-yarn-server-resourcemanager下的包org.apache.hadoop.yarn.server.resourcemanager:
ResourcesManager.java
2.代码分析
Hadoop启动时。ResourcesManager的main开始执行
1).main函数
- 进行初始化操作,eg:配置信息的读取等等,然后创建ResourcesManager地向
- 执行ResourcesManager的init()函数.
- 执行ResourcesManager的start()函数.
2).init函数
- 设置配置参数
- 依次创建 AsyncDispatcher、ContainerAllocationExpirer、ResourceTrackerService、ApplicationMasterService、ApplicationMasterLauncher、FifoScheduler(默认 可改)、ClientRMService等对象,并将这些对象(或者说服务)添加到 ArrayList<Service>对象serviceList(不同于NodeManager),这个过程与NodeManager中init()执行过程相似
- 将SchedulerEventDispatcher、RMAppManager、ApplicationEventDispatcher等等的和其相应的EventsType,都注册到异步事件调度器(AsyncDispatcher)当中
3).start()函数
- 进行配置信息的读取,安全操作认证等操作
- 调用父类的start()函数,启动serviceList中所有的服务
下图给出了部分启动的服务