NodeManager的功能结构如下图所示:
1.NodeStatusUpdater
NodeStatusUpdater是一个接口,其实现类为NodeStatusUpdaterImpl。
NodeStatusUpdater是 NodeManager 与 ResourceManager 通信(注册和心跳)的唯一通道,通信协议为ResourceTracker。
当 NodeManager 启动时, 该组件负责向 ResourceManager 注册,并汇报节点上总的可用资源( 该值在运行过程中不再汇报)。
NodeManager 启动完成之后,NodeStatusUpdater周期性与 ResourceManager 通信, 汇报各个 Container 的状态更新,包括节点上正运行的 Container、 已完成的 Container 等信息, 同时 ResourceManager 会为之返回待清理 Container 列表、 待清理应用程序列表、诊断信息、 各种 Token 等信息。
1.1.NodeManager 注册
NodeStatusUpdaterImpl 在 NodeManager 的 serviceInit() 方法中进行构建,在 serviceStart() 方法中向 ResourceManager 注册。
1.2.NodeManager 心跳
在 NodeStatusUpdaterImpl 的 serviceStart() 方法中,通过 registerWithRM() 方法完成 NodeManager 向 ResourceManager 的注册工作;之后调用 startStatusUpdater() 启动一个心跳线程。