1. Yarn的基本结构
1.1. Yarn的组成结构
Yarn总体是主/从(M/S)结构,ResourceManager(RM)是Master,NodeManager(NM)是Slave,RM负责对各NM上的资源进行统一管理和调度。Yarn主要由ResourceManager、NodeManager、ApplicationMater、Container等几个组件组成,如下图。
结合这张图,简要说明一下任务提交过程: 当用户提交一个程序时,RM会提供一个用来跟踪和管理这个程序的ApplicationMater(AM),一个程序拥有一个AM,AM负责向RM申请资源,并要求NM启动任务,资源概念在Yarn中是用Container表示。1.2. 组件简介
- ResourceManager(RM)
RM是全局的资源管理器,负责整个系统的资源管理和分配,主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Application Manager,ASM)。- 调度器
调度器根据容量、对列等限制条件,将资源分配给各个正在运行的程序。调度器仅根据程序资源需求进行分配资源,是一个“纯资源调度器”。 - 应用管理器
负责管理整个系统所有的应用程序,包括程序的提交、与调度器协商资源以及启动AM等。
- 调度器
- ApplicationMater(AM)
用户提交的每个程序都有一个AM,其功能主要有:资源的申请、任务的进一步分配、与NM通信以启动/停止任务、监控任务的运行状态等。 - NodeManager(NM)
NM是每个节点上的资源和任务管理器,其任务主要有两方面:- 通过定时的心跳向RM汇报本节点的资源使用情况以及Container的运行状况
- 接收和处理AM的Container启动/停止等各种请求
- Container
是Yarn中资源的抽象,封装了如内存、CPU、磁盘、网络等资源,其是动态资源划分单位,根据程序的需求动态生成。
ResourceManager作为Yarn的中枢,其地位尤为重要,下面将详细展开。
2. ResourceManager简析
RM负责集群所有资源的统一管理和分配。
2.1. ResouceManager主要功能
RM的主要功能有如下几点:
- 与客户端交互,处理客户端的请求;
- 启动和管理ApplicationMater,并在失败的时候重新启动(有次数限制);
- 管理NodeManager,接受来自NM的资源汇报信息,并下达管理命令如kill Container;
- 资源的管理与调度,接受来自AM的资源申请,并为之分配资源;
2.2. ResourceManager内部架构
RM的内部架构如下:
Ref:
- 《Hadoop技术内幕:深入解析YARN架构设计与实现原理》