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.1、ResourceManager
包括两个主要组件:Scheduler 和ApplicationsManager。Scheduler负责资源的分配与调度(内存、CPU、磁盘、网络等)。ApplicationsManager 负责处理客户端请求,接受作业提交、启动或监控 ApplicationMaster。每个应用程序的 ApplicationMaster 负责与 Scheduler 协商适当的资源容器,跟踪其状态并监控进度。
2.2、NodeManager
YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。根据RM命令,启动Container容器,监视容器的资源使用功能情况,并且项RM主角色汇报资源使用情况。
2.3、ApplicationMaster
负责数据的切分,为应用程序申请资源并分配给内部的任务;
2.4、Container
封装某个节点的资源(内存、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
标签:Hadoop,Yarn,调度,YARN,Scheduler,RM,NodeManager,资源 From: https://www.cnblogs.com/syq816/p/17803352.html