🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
NodeManager 运行在集群的节点上,这一点从前面安装分布式环境中可以看出,一般 NodeManager 会与 DataNode 在同一个节点。NodeManager 在集群中会有多个,负责管理每个节点上的资源。它主要负责接收来自 ResouceManager 的资源分配请求,分配具体的 Container 给具体的任务,同时,它还负责监控并报告 Container 使用信息给 ResouceManager。<ins>NodeManager 只负责管理自身节点上的 Container,并不关心运行在 Container 上的任务的运行信息,任务的运行信息由 ApplicationMaster 来管理</ins>。<br/> **NodeManager 主要作用:** ➢ 管理单个节点上的资源 ➢ 监控 Container 生命周期和使用的资源 ➢ 处理来自 ResourceManager 的指令 ➢ 处理来自 ApplicationMaster 的指令 在 NodeManager 注册到 ResourceManager 之后,它就会不间断的向ResourceManager 发送心跳(heartbeat),如果 ResourceManager 有需要它执行的指令,就作为响应发送给它。在 NodeManager 加载一个 Container 之前,它需要本地化需要的资源,包括数据文件,可执行文件,shell script 等。这些 Resource可能有能够在不同用户之间共享的资源,有能够在相同用户不同应用之间共享的资源,以及只能够被这一个 Container 使用的资源。NodeManager 也可以在ResourceManager 的指示下,杀掉 Container。当处于下面的几种场景中时,NodeManager 就可能 Kill 掉一个 Container。 ➢ ResourceManager 告诉它,Application 已经完成了。 ➢ Scheduler 决定抢占这个 Container,并将它分配给另一个 Application 或者用户。 ➢ NodeManager 检测到,这个 Container 使用的资源已经超过指定的资源限制。<br/> 当一个 Container 完成时,NodeManager 会清除它在本地存储的数据。当一个应用完成时,NodeManager 会删除全部跟它相关的 Container 的数据。