在 YARN 中,如果一个 Container 运行期间使用的内存超出了系统为其分配的限制,YARN 的默认处理机制是:由该节点上的 NodeManager 直接将该 Container 强制杀死(Kill)。 具体来说,YARN 的内存监控和处理机制包含以下几个核心细节: 1. 监控主体与方式 执行者:每个节点上的 NodeManager 负责监控运行在该节点上的所有 Container。 监控方式:NodeManager 会启动一个监控线程(默认每隔 3 秒检查一次),通过读取 Linux 系统的 目录,计算出该 Container 及其产生的所有子进程(Process Tree)所消耗的内存总和。 2. 物理内存与虚拟内存的双重检查 YARN 默认会同时检查 物理内存(Physical Memory, pmem) 和 虚拟内存(Virtual Memory, vmem)。只要其中任何一个超标,Container 都会被杀掉。 物理内存超限 (PMEM Check): 如果 Container 的实际物理内存使用量超过了分配的值(例如分配了 1GB,但使用了 1.1GB)。 ...