返回

从源码理解 Yarn Container 生命周期

后端







**容器生命周期源码分析:从 AM 到 NM** 

## 容器分配过程概述

在 Yarn 中,Container 是任务运行的基本单元,它封装了任务所需的资源和运行环境。Container 由 ApplicationMaster(AM)向 ResourceManager(RM)申请,RM 根据集群资源情况为 AM 分配 Container。一旦 AM 获得 Container,它就会将任务提交到 NM 节点,由 NM 节点负责启动和管理 Container。

## 申请 Container 的流程

AM 申请 Container 的过程主要分为以下几步:

1. AM 向 RM 发送请求,请求中包含所需 Container 的资源信息,如内存、CPU 和磁盘空间等。
2. RM 根据集群资源情况,为 AM 分配 Container。
3. RM 将 Container 信息发送给 AM。
4. AM 将任务提交到 NM 节点,由 NM 节点负责启动和管理 Container。

## Container 启动过程

当 AM 将任务提交到 NM 节点后,NM 节点会启动 Container。Container 启动的过程主要分为以下几步:

1. NM 节点从 AM 处接收任务信息。
2. NM 节点在本地文件系统中创建 Container 的工作目录。
3. NM 节点下载任务所需的资源,如 JAR 包、配置文件等。
4. NM 节点启动任务进程。
5. 任务进程开始执行任务。

## Container 运行过程

Container 运行期间,NM 节点会负责监控 Container 的状态,并与 AM 进行通信。如果 Container 遇到问题,NM 节点会向 AM 报告问题,由 AM 决定是否重新启动 Container。

## Container 清理过程

当 Container 任务完成后,NM 节点会清理 Container。Container 清理的过程主要分为以下几步:

1. NM 节点停止任务进程。
2. NM 节点删除 Container 的工作目录。
3. NM 节点向 AM 报告 Container 已完成。

通过以上对 Yarn Container 生命周期的源码分析,我们深入了解了 YARN 架构与实现的细节,以便更好地掌握 YARN 的工作原理。