MapReduce On Yarn的执行流程

 

 

1、概述

   Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

 Yarn的架构如下图所示:

  

 从Yarn的架构图来看,他主要由ResourceManager、NodeManager、ApplicationMaster和Container等一下几个组件构成。

 1)ResourceManager  

   Yarn分层结构的本质是ResourceManager,这个实体控制整个集群并管理应用程序向基础计算资源的分配。Resourcemanager将各个资源(计算,内存,带宽等)精心安排给基础NodeManager。ResourceManager还与ApplicationMaster一起分配资源,与NodeManager一起启动和监视他们的基础应用程序。

  总的来说,RM有以下功能:

  (1)处理客户端的请求

  (2)启动和监控ApplicationMaster

  (3)监控NodeManager

  (4)资源分配与调度

   2)ApplicationMaster

 ApplicationMaster管理在Yarn内运行的每个应用程序。负责协调来自RM的资源,并通过NodeManager监控容器的执行和资源的使用(CPU、内存等的资源分配)。总体来说,AM有以下作用

 (1)负责数据的切分

 (2)为应用程序申请资源并分配给内部的任务

 (3)任务的监控与容错

 3)NodeManager

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

 总体来说,NM有以下作用

 (1)管理单个节点上的资源

 (2)处理来自ResourceManager的命令

 (3)处理来自ApplicationMaster的命令

4)、Container

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

   总的来说,Container有以下作用

对任务运行环境进行抽象,封装CPU、内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息

2、Yarn的运行机制

  运行流程步骤为:

  (1)用户向Yarn提交应用程序(job  Application),jar文件,其中包裹着ApplicationMaster程序,启动ApplicationMaster的命令等

  (2)RM为该job分配第一个Container,并选中一个NodeManager在其上运行job的ApplicationMaster

  (3)ApplicationMaster向ApplicationsManager注册,这样就可以在RMWeb界面查询这个job的运行状态

  (4)ApplicationMaster采用轮询的方式通过RPC协议向RM申请和领取资源

  (5)一旦ApplicationMaster拿到资源,就与对应的NM通信,要求启动任务。

  (6)NodeManager为任务设置好运行环境(jar包等),将任务命令写在一个脚本里。并通过该脚本启动任务 task。

  (7)各个task通过rpc协议向ApplicationMaster汇报自己的状态和进度,以此让ApplicationMaster随时掌握各个task的运行状态。

  (8)ApplicationMaster向ApplicationsManger注销且关闭自己。

总体来说,分为两步:

  1、启动ApplicationMaster,申请资源

  2、运行任务,直到任务运行完成。

原文地址:https://www.cnblogs.com/zourui4271/p/12745436.html