YARN调度专题

1、yarn概述

1.1、yarn是集群中的资源管理模块

为各类计算框架提供资源的管理和调度

①用于管理集群资源(服务器硬件,包括CPU,内存,磁盘,网络IO等);

②调度运行在yarn上的各种任务

调度器:用来对hadoop分布式集群中同一时刻运行的job进行规划和约束的。

总而言之:调度资源,管理任务
1.2、核心出发点:分离资源管理和作业监控

①全局资源管理 - RM

②每个应用程序对应一个应用资源管理 - AM

1.3、调度层级

①一级调度管理

​ 计算资源管理(CPU,内存,磁盘,IO)

②二级调度管理

任务内部的计算模型管理(Appmaster的任务精细化管理)

2、相关概念

2.1、ResourceManager

①调度器:根据容量、队列等条件,将系统中的资源分配给各个正在运行的应用程序。

②应用程序管理器:监控管理整个系统中所有应用程序,跟踪分给的container的进度、状态。

2.2、NodeManager

每个节点上的资源和任务管理器

①定时向ResourceManager汇报节点上的资源使用情况和各个container的运行状态

②接受处理Appmaster的container的启动/停止请求er

2.3、Appmaster

用户请教的程序均包含一个Appmaster,负责应用的监控,跟踪应用状态,重启是失败任务。

2.4、Container

资源抽象,包含内存,CPU,磁盘,网络等

当Appmaster向Resource申请资源时,Resourcemanager为Appmaster返回的资源便用container表示。

3、调度器的种类

3.1、队列调度
任务提交的顺序排成队列,资源分配时,先进先出,同一时间队列中只能有一个任务执行

在这里插入图片描述

  • 大任务导致占用集群资源,导致其他任务被阻塞
    在这里插入图片描述
3.2、容量调度器
多队列,每个队列内部都是先进先出,同一时间队列中只有一个任务在执行,在同一个队列里面先到达先服务;
	:1、队列的并行度为队列的个数;
	:2、每个队列内部采用队列调度;
	:3、为防止同一用户的作业独占队列中的资源,该调度器会对同一个用户提交的作业所占资源量进行限定;
	:4、提交任务时,会选择一个最闲的队列;
	:5、按照作业优先级和提交时间顺序,对队列内的任务进行排序;

在这里插入图片描述

3.3、公平调度器
公平调度器:多队列,每个队列内部按照缺额大小分配资源启动任务,同一时间队列中有多个任务执行,队列中的并行度大于等于队列个数,按照缺额调度,缺额大的优先;
	:1、每个队列中的job按照优先级分配资源,优先级越高的分配的资源越多;
	:2、在同一队列中,作业是按照缺额的高低来先后执行的,job的资源缺额越大,越先获得资源进行运行;
	
缺额 - 在资源有限的情况下,每个job理想情况下所获得的计算资源与实际获得的计算资源存在的差距;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ha40jYdm-1627811225380)(C:/Users/%E6%9D%8E%E6%B5%B7%E4%BC%9F/AppData/Roaming/Typora/typora-user-images/image-20210616200934301.png)]

为所有应用分配公平资源,公平调度可在多个队列工作。

①假设有两个A和B,他们分别拥有一个队列;

②当A启动一个job,而B没有job,A会获得全部集群资源;

③当B启动一个job后,A的job会继续运行,不过一会之后两个任务各自会获得一半的集群资源;

④若B再启动第二个job且其他job还在运行,则它将会和B的第一个job共享B这个队列的资源,

B两个job会各自使用集群的四分之一的资源,而A的job仍然会用集群一半的资源,结果就是资源最终在两个用户之间的平等共享。

4、Yarn Job提交流程

  • 一个Job提交到hadoop集群中内部的步骤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O9bWEs3E-1627811225383)(C:/Users/%E6%9D%8E%E6%B5%B7%E4%BC%9F/AppData/Roaming/Typora/typora-user-images/image-20210616194540155.png)]

1、MR程序上传到客户端所在的节点上,在敲回车的一瞬间

2、客户端节点会向ResourceManager申请一个Application
	
3、ResourceManager会向客户端节点返回一个资源提交的路径,即将客户端提交的jar包最终提交到HDFS的相应路径 application_id;

4、客户端根据ResourceMnager反馈的结果,会将Job所需资源提交到HDFS上;
	:jar包能被所有的nodemanager所执行,nodemanager计算的时候会下载相应jar包
	:移动数据不如移动计算;
	
5、客户端提交资源完毕之后,会向ResourceManager申请运行一个MRAppMaster进程;
	MRAppMaster进程:向ResourceManager申请资源;
	
6、Resource将用户请求初始化为一个Task;
	调度方式:先进先出
	
7、Nodemanager领取到task计算任务,在众多的nodemanager中随机选一个作为MRAppMaster,会创建一个container容器(CPU,内存,网络带宽)
	
8、下载job资源到达本地,即MRAppMaster所在的NodeManager的节点;

9、MRAppMaster向ResourceMnager申请Maptask运行的容器;

10、nodemanager领取到任务,创建容器,下载jar包;

11、MRAppMaster发送指令启动脚本,Maptask并行执行,计算结果写入分区;
	:比如Maptask计算结果只有两个分区;
12、maptask计算完毕之后,MRAppMaster向Reduce申请相应reduce所需个数的容器
	
13、Reduce向Map获取相应分区的数据,并行计算,落地到HDFS上;

14、程序运行完毕后MRAppMaster向RM申请注销自己,nodemanager会向RM汇报计算完毕,申请领取其他计算任务;

5、常见问题

5.1、Kill Command 卡住数分钟没有日志输出

P:提交Hive查询任务,作业状态running,日志提示:Kill Command 卡住数分钟没有日志输出,该如何处理?

YarnApplicationState字段为当前作业状态,Queue为当前运行集群队列

查看该任务运行状态为waitting,即等待资源运行状态,由于用户使用的队列为root.default,该队列为公用队列,资源吃紧时会出现等待的情况。

解决方案:有申请集群单独队列的应用组,需排查队列是否有批量任务启动,导致资源队列吃紧。核查正常使用导致的资源不足,建议用户申请资源队列扩容,解决问题。
5.2、在生产环境下怎么选择什么样的调度器?
大厂:如果对并发度要求比较高,选择公平,要求服务器性能必须OK;
中小公司:集群服务器资源不太充裕选择容量。
5.3、生产环境如何配置队列
(1)调度器默认就1个default队列,不能满足生产要求。
(2)按照业务模块:登录注册、购物车、下单、业务部门1、业务部门2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随缘清风殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值