在 YARN(Yet Another Resource Negotiator)中,启动应用程序的第一个 Container(即运行 ApplicationMaster (AM) 的 Container)是整个作业生命周期中最关键的一步。也就是所谓的“鸡生蛋,蛋生鸡”的问题中的“第一只鸡”。 这个过程由 Client(客户端)、ResourceManager (RM) 和 NodeManager (NM) 协同完成。以下是 YARN 为 Application 启动第一个 Container 的详细步骤: --- 第一阶段:客户端提交应用程序 (Client Submission) 1. 申请 Application ID: 客户端(例如提交 Spark 或 MapReduce 任务的机器)首先向 ResourceManager (RM) 发送 RPC 请求(),要求分配一个新的 Application ID。 2. 构建上下文 (Context): 客户端在本地准备应用程序的启动信息,最核心的是构建 。其中包含了启动第一个 Container 所需的所有“配方”,这个配方叫做 (...