Yarn资源调度器
一、yarn中的角色:
ResourceManager:集群计算资源的分配,启动ApplicationMaster,监控NodeManager的状态。
NodeManager:启动和管理节点中的容器。
ApplicationMaster:运行mapreduce任务,每个job有一个,分配map在哪里运行,reduce在哪里运行。
二、yarn 中 MapReduce 的 job的运行流程:
工作机制详解
(0)Mr程序提交到客户端所在的节点,Yarnrunner向Resourcemanager申请一个Application。
(2)rm将该应用程序的资源路径返回给yarnrunner
(3)该程序将运行所需资源提交到HDFS上
(4)程序资源提交完毕后,申请运行mrAppMaster
(5)RM将用户的请求初始化成一个task
(6)其中一个NodeManager领取到task任务。
(7)该NodeManager创建容器Container,并产生MRAppmaster
(8)Container从HDFS上拷贝资源到本地
(9)MRAppmaster向RM 申请运行maptask容器
(10)RM将运行maptask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。
(11)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动maptask,maptask对数据分区排序。
(12)MRAppmaster向RM申请2个容器,运行reduce task。
(13)reduce task向maptask获取相应分区的数据。
(14)程序运行完毕后,MR会向RM注销自己。
https://www.cnblogs.com/frankdeng/p/9311474.html
1、将MR程序提交到客户端所在的节点,运行hadoop jar命令后,会产生RunJar进程,客户端clinet会向ResourceManager申请执行一个job。
2、ResourceManager收到请求后,会向clinet返回job的提交路径和jobid。
3、clinet会将job提交到相应的共享文件路径下 /yarn-staging/jobid。
4、clinet向ResourceManager汇报提交结果,并申请运行MRAppMaster。
5、ResourceManager将这个job加入到任务队列中。
6、NodeManager通过与ResourceManager的心跳连接,从任务队列中获取新的任务。
7、ResourceManager使用资源调度器为NodeManager分配资源容器。
8、ResourceManager在容器中启动MRAppMaster进程。
9、由MRAppMaster来分配在哪些NodeManager上运行map,哪些运行reduce任务。
10、运行map、reduce任务的NodeManager从共享文件系统中获取job相关资源,包括jar文件和配置文件等。然后运行map和reduce任务。
11、job任务完成后,MRAppMaster向ResourceManager注销自己,让其回收资源。
三、yarn中的三种资源调度器:
资源调度器https://blog.csdn.net/qq_21383435/article/details/82659947
1、FIFO调度器:
2、容量调度器:
多队列;每个队列内部先进先出,同一时间队列中只有一个任务在执行。队列的并行度为队列的个数。
3、公平调度器:
多队列;每个队列内部按照缺额大小分配资源启动任务,同一时间队列中有多个任务执行。队列的并行度大于等于队列的个数。