Hadoop:Yarn资源调度

发布时间 2023-11-06 20:33:00作者: 做个读书人

1、Yarn是什么?

  Apache Hadoop YARN (Yet Another Resource Negotiator 另一种资源协调者)是一种新的Hadoop资源管理器,提供一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存,CPU等,磁盘由HDFS管理)。Yarn支持各种计算框架,不关心你干是干什么的,只关心你要的资源

2、Yarn架构

   YARN 的基本思想是将资源管理和作业调度/监控的功能拆分为单独的守护进程。包括一个全局的 ResourceManager ( RM ) 和每个应用程序的ApplicationMaster ( AM )。Yarn的整体架构图如下:

 2.1ResourceManager

  包括两个主要组件:Scheduler 和ApplicationsManagerScheduler负责资源的分配与调度(内存、CPU、磁盘、网络等)。ApplicationsManager 负责处理客户端请求,接受作业提交、启动或监控 ApplicationMaster。每个应用程序的 ApplicationMaster 负责与 Scheduler 协商适当的资源容器,跟踪其状态并监控进度。

2.2NodeManager

  YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。根据RM命令,启动Container容器,监视容器的资源使用功能情况,并且项RM主角色汇报资源使用情况。

2.3ApplicationMaster

  负责数据的切分,为应用程序申请资源并分配给内部的任务;

2.4Container

  封装某个节点的资源(内存、CPU、磁盘、网络等)

3、Yarn工作原理

(1)MR程序提交到客户端所在的节点。

(2)YarnRunner向ResourceManager申请一个Application。

(3)RM将该应用程序的资源路径返回给YarnRunner。RM给Client返回该job资源的提交路径(返回一个公共的资源提交路径,保证其他NM都能访问到)和作业id

(4)该程序将运行所需资源提交到HDFS上。

(5)程序资源提交完毕后,申请运行mrAppMaster。

(6)RM将用户的请求初始化成一个Task,会有一个节点来运行这个Task.

(7)其中一个NodeManager领取到Task任务。

(8)该NodeManager创建容器Container,并产生MRAppmaster。

(9)Container从HDFS上拷贝资源到本地。

(10)MRAppmaster向RM 申请运行MapTask资源。

(11)RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。

(12)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。

(13)MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。

(14)ReduceTask向MapTask获取相应分区的数据。

(15)程序运行完毕后,MR会向RM申请注销自己。

 

4、Yarn资源调度

YARN支持多种调度算法,包括FIFO Scheduler、Capacity Scheduler和Fair Scheduler