Yarn基础架构/工作机制/作业提交流程

一、什么是Yarn

Yarn是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

二、Yarn的基本架构

YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。看一张官网上的架构图:

由图可以看出,yarn总体上是master/slaver结构,在整个资源管理框架中ResourceManager为master,NodeManager为slaver。

另外我在其他文章中看到另外一张图:

1.ResourceManager

ResourceManager是全局的资源管理器,它是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等。

根据功能不同将它分为两个组件:Scheduler(调度器)ApplicationManager(应用管理器)。

(1)Scheduler

Scheduler根据集群中容量、队列和资源等限制,将资源分配给各个正在运行的应用。虽然被称为调度器,但是它仅负责资源的分配,而不负责监控各个应用的执行情况和任务失败、应用失败或者硬件失败时的重启任务。Scheduler根据各个应用的资源需求和集群各个节点的容器(Container)进行调度。

在yarn中有三种调度器:FIFO Scheduler ,Capacity Scheduler,FairS cheduler。

(2)ApplicationManager

ApplicationManager主要负责接收job的提交请求,为应用程序分配用来运行ApplicationMaster的第一个Container,并且负责监控ApplicationMaster,在ApplicationMaster失败时负责重启运行ApplicationMaster的Container。

总的来说,ResourceManager的主要作用为:

  1. 处理客服端请求

  2. 监控NodeManager

  3. 启动或监控ApplicationMaster

  4. 资源的分配和调度

2.NodeManager

NodeManager(节点管理器)整个集群有多个,负责单个节点上的资源管理,当一个节点启动时,NodeManager会向ResourceManager进行注册并告知ResourceManager自己有多少资源可用。它负责接收ResourceManager的资源分配请求,分配具体的Container给应用,并监控和报告节点中Container的运行状态(CPU、内存、硬盘等)到ResourceManager;管理每个Container的声明周期,NodeManager只负责管理自身的Container,它并不知道运行在它上面的应用信息,负责管理应用信息的组件是ApplicationMaster。

NodeManager由Container和ApplicationMaster两个组件组成:

(1)Container

Container是集群节点将自身内存、CPU、磁盘、网络等资源封装在一起的抽象概念,是yarn框架的计算单元,是具体执行应用task(如mapTask、reduceTask)的基本单位。Container和集群节点的关系是:一个几点会运行多个Container,但一个Container不会跨节点运行。Container由NodeManager监控运行状态,并上报到ResourceManager,由ResourceManager调度。

(2)ApplicationMaster

每一个应用程序从ApplicationMaster开始,它本身就是一个Container(第0个),一旦启动,ApplicationMaster就会根据任务需求,与ResourceManager协商需要的Container,在运行过程中动态释放和申请Container。

ApplicationMaster负责与scheduler协商合适的container,跟踪应用程序的状态,以及监控它们的进度,ApplicationMaster是协调集群中应用程序执行的进程。每个应用程序都有自己的ApplicationMaster,负责与ResourceManager协商资源(container)和NodeManager协同工作来执行和监控任务 。当一个ApplicationMaster启动后,会周期性的向resourcemanager发送心跳报告来确认其健康和所需的资源情况。

总的来说,NodeManager主要功能为:

  1. 管理单个节点上的资源

  2. 处理来自ResourceManager的命令(为应用分配Container)

  3. 处理来自ApplicationMaster的命令

三、工作机制/作业提交流程

以一个MR的程序为例,了解一下yarn的工作机制及Job的提交流程:

作业提交全过程详解

1、作业提交

第1步:client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。

第2步:client向ResourceManager申请一个Application。

第3步:ResourceManager给client返回该job资源的提交路径和applicationId。

第4步:client提交jar包、切片信息和配置文件到3返回的指定资源提交路径。

第5步:client提交完资源后,向ResourceManager申请运行ApplicationMaster。

2、 作业初始化

第6步:当ResourceManager收到client的请求后,将该job初始化成Task添加到调度器中。

第7步:某一个空闲的NodeManager领取到该job。

第8步:该ResourceManager创建Container,并产生ApplicationMaster。

第9步:下载client提交的资源到本地。

3、任务分配

第10步:ApplicationMaster向ResourceManager申请运行多个maptask任务资源。

第11步:ResourceManager将运行maptask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。

4、任务运行

第12步:ApplicationMaster向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动maptask,maptask对数据分区排序。

第13步:ApplicationMaster等待所有maptask运行完毕后,向ResourceManager申请容器,运行reduce task。

第14步:reduce task向maptask获取相应分区的数据。

第15步:程序运行完毕后,MR会向ResourceManager申请注销自己。

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值