在 Hadoop YARN 架构中,NodeManager (NM) 是运行在每个计算节点上的代理,负责该节点上 Container 的生命周期管理。其中,监控 Container 的资源使用情况是 NodeManager 的核心功能之一,主要为了防止某个 Container 恶意或意外地消耗过多资源,从而影响节点上其他 Container 或系统基础服务的运行。 NodeManager 监控 Container 资源使用情况的机制主要依赖于以下几个核心组件和操作系统特性: 1. 核心组件: 在 NodeManager 内部,有一个专门的后台服务叫做 (具体实现类通常是 )。 轮询机制:这个服务会启动一个监控线程,按照一定的时间间隔(默认是 3秒,可通过 配置)周期性地醒来。 收集指标:每次醒来时,它会去收集当前节点上所有正在运行的 Container 的资源(主要是 CPU 和内存)使用数据。 2. 进程树追踪 (Process Tree Tracking) 一个 Container 往往不止包含一个单一的进程。例如,YARN 启动一个 shell 脚本,该脚本又启动了一个 J...