在 Apache YARN 架构中,ApplicationMaster (AM) 是每个应用程序特有的实例(例如 MapReduce、Spark、Flink 都有自己实现的 AM)。AM 负责管理应用程序的生命周期,其中最核心的任务就是计算所需资源,并向 ResourceManager (RM) 申请资源。 这个过程可以分为两个主要阶段:资源计算阶段(由特定计算框架决定)和资源申请阶段(通过 YARN 的标准协议进行)。 以下是详细的工作机制: --- 第一阶段:AM 内部如何计算所需资源? YARN 作为一个通用的资源管理平台,它本身不关心应用需要多少资源。计算资源的逻辑完全由具体的计算框架(如 Spark、MapReduce)在 AM 内部实现。 AM 主要从两个维度计算资源:数量(Size)和位置(Locality)。 1. 资源数量的计算 (How much) 不同的框架计算规则不同: MapReduce AM (MRAppMaster): Map 阶段: AM 会读取 HDFS 上的数据切片(Input Splits)信息。通常一个 Split 对应一个 Map Tas...