大数据 - Yarn

原创
2020/06/18 21:39
阅读数 83

Yarn

  • 主要内容

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

 

① Yarn的基本结构

Resource Manager整个节点的老大

Node Manager单个节点的老大

Application Master节点上单个job的老大

Container:一个容器,job运行需要的资源都封装在容器中

 

② Yarn工作机制 / job提交过程

具体流程:

1 将MR程序提交到客户端所在的节点,客户端向RM申请一个application;

2 RM将应用程序的资源路径返还给客户端;

3 客户端将程序运行所需资源提交到HDFS上;

4 客户端将程序资源提交完毕后,向RM申请运行mrAppMaster

5 RM将用户的请求初始化成一个Task任务,并将任务放到任务队列中;

6 其中一个NodeManager去任务队列领取Task任务;

7 领取完任务后,该NodeManager创建容器Container,并产生MRAppmaster

8 ContainerHDFS上拷贝资源到本地;

9 MRAppmasterRM 申请运行MapTask容器;

10 RM将运行MapTask任务并分配给另外两/多个NodeManager,另两个NodeManager分别领取任务并创建容器;

11 MRAppmaster向两个接收到任务的NodeManager发送程序启动脚本,这两/多个NodeManager分别启动MapTask,MapTask对数据分区排序;

12 MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask;

13 ReduceTaskMapTask获取相应分区的数据;

14 程序运行完毕后,MR会向RM申请注销自己;

要注意:将HDFS、MR和Yarn三者的工作流程结合起来。

 

③ 资源调度器

目前,Hadoop作业调度器主要有三种:FIFO、Capacity SchedulerFair Scheduler。Hadoop2.7.2默认的资源调度器是Capacity Scheduler

三种调度器的比较:

(1)FIFO调度器:先进先出

(2)容量调度器:Capacity Scheduler

  • 容量调度器是多个FIFO调度器并行的结果;
  • 如何确定哪个任务先执行?

    首先,计算队列中正在运行的任务数与分得的资源的比值,比值最小的队列最闲;(找出最先的队列)

    其次,按照作业的优先级和提交时间顺序,同时考虑用户资源限制和内存限制对队列内任务排序;

(3)公平调度器:Fair Scheduler

  • 支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源
  • 每个队列中的 job 按照优先级分配资源,优先级越高分配越多;
  • 在资源有限的情况下,每个 job 理想获得的计算资源与真实获得的计算资源的差值叫做缺额,同一队列中,job 的资源缺额越大,优先级越高,越优先执行,可以多个任务同时运行;

 

容量调度器与公平调度器区别

容量调度器是并行执行的

公平调度器是并发执行的

并行是一段时间内同时执行,具体到时刻只有一个执行,即多个线程同一时刻只有一个执行

并发是同一时刻同时发生执行,即多个线程同一时刻执行

 

 

 

 

 

 

 

 

 

 

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部
返回顶部
顶部