概述
NodeManager是运行在单个节点上的代理,它需要与应用程序的ApplicationMaster和集群的管理节点ResourceManager交互:从ApplicationMaster上接收有关的container的命令并执行;向ResourceMansger汇报各个container运行状态和节点健康状况,并领取有关container的命令执行
NodeManager是yarn中单个节点上的代理,它管理hadoop集群中单个计算节点,功能包括与ResourceManager保持通信、管理container和生命周期、监控每个container的资源使用情况、追踪节点健康状况、管理日志和不同应用程序用到的附属服务。
NodeManager职能
1、ResourceTrackerProtocol协议
NodeManager通过该RPC协议向ResourceManager注册、汇报节点健康状况和container运行状况,并领取ResourceManager下达的命令,包括重新初始化、清理container占用资源等。在该RPC协议中,ResourceManager扮演RPC Server的角色,而NodeManager扮演PRC
client的角色,NodeManager总是周期性的主动向ResourceManager发送请求,并领取下达给自己的命令。ResourceTrackerProtocol协议主要提供了以下2个RPC函数
registerNodeManager
NodeManager启动时通过该RPC函数向ResourceManager注册,注册信息由register-NodeManagerRequest封装的,包括3部分
- httpPort: 该NodeManager对外提供的HTTP端口号,ResourceManager会在界面上提供一个可直接访问NodeManager web界面的超链接
- NodeId: 该NodeManager所在的host和对外的RPC端口号
- totalResource: 该NodeManager所在节点总的可分配资源,当前支持内存和虚拟CPU两种资源,管理员可通过参数yarn.nodemanager.resource.cpu-vcores和yarn.nodemanager.resource.memory-mb还可以通过参数yarn.nodemanager.vmem-pmem-ratio设置物理内存和虚拟内存使用比率,默认是2.1,即每使用1MB物理内存,最多可以使用2.1MB虚拟内存
ResourceManager将还通过registerNodeManager函数向NodeManager返回一个Resister-NodeManagerResponse类型的对象,主要包含以下信息:
- MasterKey: 新生成的container Token和Node Token的Master Key
- NodeAction: ResourceManager向该NodeManager返回的下一步操作,主要包含NORMAL、RESYNC和SHUTDOWN三种,分别表示正常、重新同步信