前面几篇文章对 Yarn 基本架构、程序基础库、应用设计方法等进行了介绍。之后几篇将开始对 Yarn 核心组件进行剖析。
ResourceManager(RM)是 Yarn 的核心管理服务,负责集群管理、任务调度、状态机管理等,本篇将对 RM 总体架构进行介绍。

一、RM 基本职能

主要包含以下几个功能:

【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述

如上图所示,RM 中各组件通过对应 RPC 与各 Client 进行通信:

从以上介绍中可以看出,与 RM 通过 RPC 通信的组件都采用「Pull 模型」,各个「Client」通过心跳定期向 RM 汇报,在心跳返回值中领取 RM 下达的指令。

二、RM 内部架构

本节将深入 RM 内部,看其内部组织结构和主要模块,架构图如下所示:
【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述

一)用户交互模块

RM 分别针对普通用户、管理员和 Web 提供了三种对外服务:

二) NM 管理模块

三) AM 管理模块

四) Application 管理模块

五)状态机管理模块

RM 共维护四类状态机:

六)安全管理模块

RM 有非常全面的权限管理机制,主要包括:

七)资源分配模块

该模块主要涉及一个组件「ResourceScheduler」。其是资源调度器,按照一定的约束条件(比如队列容量限制等)将集群中的资源分配给各个应用程序。
ResourceScheduler 是一个插拔式模块,自带三个调度器,用户可以自己定制:

此部分将在后面文章中更详细的介绍。

三、RM事件与事件处理器

Yarn采用了事件驱动机制,而RM是的实现则是最好的例证。所有服务和组件均是通过中央异步调度器组织在一起的,不同组件之间通过事件交互,从而实现了一个异步并行的高效系统。
下面是详细的表格:

【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述

四、小结

在 YARN 中,ResourceManager 负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序。
本篇对 ResourceManager 总体架构进行了介绍。对其基本职能、内部结构、处理的事件进行了梳理。后续文章中将会对每个部分深入源码进行更深入讨论。


参考文章:
《Hadoop 技术内幕 - 深入解析 Yarn 结构设计与实现原理》第五章