这是我参与「第四届青训营 」笔记创作活动的的第12天
[第四届青训营笔记创作活动]
一、概述
YARN是一个资源管理、任务调度的框架,主要包含三大模块:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。其中,ResourceManager 负责所有资源的监控、分配和管理;ApplicationMaster 负责每一个具体应用程序的调度和协调;NodeManager 负责每一个节点的维护。对于所有的 applications,RM 拥有绝对的控制权和对资源的分配权。而每个 AM 则会和 RM 协商资源,同时和 NodeManager 通信来执行和监控 task。几个模块之间的关系如下图所示:
二、ResourceManager
1. 整体架构
ResourceManager 的内部组织结构和主要模块如下图所示:
2. 主要职能
在 YARN 中,ResourceManager 负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序。概括起来,ResourceManager 主要完成以下几个功能:
- 与客户端交互,处理来自客户端的请求;
- 启动和管理 ApplicationMaster,并在它运行失败时重新启动它;
- 管理 NodeManager,接收来自 NodeManager 的资源汇报信息,并向 NodeManager 下达管理指令(比如杀死 Container 等);
- 资源管理与调度,接收来自 ApplicationMaster 的资源申请请求,并为之分配资源。
三、NodeManager
1. 整体架构
NodeMaanager 的内部组织结构和主要模块如下图所示:
2. 主要职能
NodeManager(NM)是 Yarn 中单个节点上的代理,它管理 Hadoop 集群中单个计算节点,功能包括与 ResourceManager 保持通信、管理 Container 的生命周期、监控每个 Container 的资源使用情况、追踪节点健康状况、管理日志和不同应用程序用到的附属服务(auxiliary service)。NodeManager 主要完成以下几个工作:
- NodeManager 是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控。YARN 集群每个节点都运行一个 NodeManager。
- NodeManager 定时向 ResourceManager 汇报本节点资源(CPU、内存)的使用情况和 Container 的运行状态。当 ResourceManager 宕机时 NodeManager 自动连接 RM 备用节点。
- NodeManager 接收并处理来自 ApplicationMaster 的 Container 启动、停止等各种请求。
四、ApplicationMaster
ApplicationMaster 实际上是特定计算框架的一个实例,每种计算框架都有自己独特的 ApplicationMaster,负责与 ResourceManager 协商资源,并和 NodeManager 协同来执行和监控 Container。ApplicationMaster主要完成以下几个工作:
- 初始化向ResourceManager报告自己的活跃信息的进程
- 计算应用程序的的资源需求。
- 将需求转换为YARN调度器可以理解的ResourceRequest。
- 与调度器协商申请资源
- 与NodeManager协同合作使用分配的Container。
- 跟踪正在运行的Container状态,监控它的运行。
- 对Container或者节点失败的情况进行处理,在必要的情况下重新申请资源。