MAPREDUCE服务 MRS-YARN基本原理:YARN结构

时间:2023-11-07 14:09:49

YARN结构

YARN分层结构的本质是ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager将各个资源部分(计算、内存、带宽等)精心安排给基础NodeManager(YARN的每个节点代理)。ResourceManager还与Application Master一起分配资源,与NodeManager一起启动和监视它们的基础应用程序。在此上下文中,Application Master承担了以前的TaskTracker的一些角色,ResourceManager承担了JobTracker的角色。

Application Master管理一个在YARN内运行的应用程序的每个实例。Application Master负责协调来自ResourceManager的资源,并通过NodeManager监视容器的执行和资源使用(CPU、内存等的资源分配)。

NodeManager管理一个YARN集群中的每个节点。NodeManager提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1通过插槽管理Map和Reduce任务的执行,而NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。

图1 YARN结构

图1中各部分的功能如表1所示。

表1 结构图说明

名称

描述

Client

YARN Application客户端,用户可以通过客户端向ResourceManager提交任务,查询Application运行状态等。

ResourceManager(RM)

负责集群中所有资源的统一管理和分配。接收来自各个节点(NodeManager)的资源汇报信息,并根据收集的资源按照一定的策略分配给各个应用程序。

NodeManager(NM)

NodeManager(NM)是YARN中每个节点上的代理,管理Hadoop集群中单个计算节点,包括与ResourceManger保持通信,监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary service)。

ApplicationMaster(AM)

即图中的App Mstr,负责一个Application生命周期内的所有工作。包括:与RM调度器协商以获取资源;将得到的资源进一步分配给内部任务(资源的二次分配);与NM通信以启动/停止任务;监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

Container

Container是YARN中的资源抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等(目前仅封装内存和CPU),当AM向RM申请资源时,RM为AM返回的资源便是用Container表示。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。

在YARN中,资源调度器是以层级队列方式组织资源的,这种组织方式有利于资源在不同队列间分配和共享,进而提高集群资源利用率。如下图所示,Superior Scheduler和Capacity Scheduler的核心资源分配模型相同。

调度器会维护队列的信息。用户可以向一个或者多个队列提交应用。每次NM心跳的时候,调度器会根据一定规则选择一个队列,再选择队列上的一个应用,并尝试在这个应用上分配资源。若因参数限制导致分配失败,将选择下一个应用。选择一个应用后,调度器会处理此应用的资源申请。其优先级从高到低依次为:本地资源的申请、同机架的申请,任意机器的申请。

图2 资源分配模型
support.huaweicloud.com/productdesc-mrs/mrs_08_005101.html