个人学习整理,所有资料来自尚硅谷
B站学习连接:添加链接描述

Yarn调度器和调度算法

​ 目前,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3默认的资源调度器是Capacity Scheduler。

​ CDH框架默认调度器是Fair Scheduler。

​ 具体设置详见:yarn-default.xml文件

<property><description>The class to use as the resource scheduler.</description><name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

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

FIFO调度器(First In First Out):单队列,根据提交作业的先后顺序,先来先服务。

​ 优点:简单易懂;

​ 缺点:不支持多队列,生产环境很少使用。

2. 容量调度器(Capacity Scheduler)

Capacity Scheduler是Yahoo开发的多用户调度器。

2.1 容量调度器特点

  1. 多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略。

  2. 容量保证:管理员可为每个队列设置资源最低保证和资源使用上限。

  3. 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。

  4. 多租户:支持多用户共享集群和多应用程序同时运行。为了防止同一个用户的作业独占队列的资源,该调度器会对同一用户提交的作业所占资源进行限定。

2. 容量调度器资源分配算法


  1. 队列资源分配
  • 从root开始,使用深度优先算法,优先选择资源占用率最低的队列分配资源。
  1. 作业资源分配
  • 默认按照提交作业的优先级提交顺序分配资源。
  1. 容器资源分配
  • 按照容器的优先级分配资源;
  • 如果优先级相同,按照数据本地性原则
    • 优先和数据在同一节点
    • 任务和数据在同一节点
    • 任务和数据不在同一节点也不再同一机架

3. 公平调度器(Fair Scheduler)

Fair Scheduler是Facebook开发的多用户调度器。

3.1 公平调度器特点

(1)与容量调度器相同点:

  • 多队列:支持多队列多作业

  • 容量保证:管理员可为每个队列设置资源最低保证和资源使用上限

  • 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。

  • 多租户:支持多用户共享集群和多应用程序同时运行;为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。

(2)与容量调度器不同点

  • 核心调度策略不同

    • 容量调度器:优先选择资源利用率低的队列
    • 公平调度器:优先选择对资源的缺额比例大的
  • 每个队列可以单独设置资源分配方式
    • 容量调度器:FIFO、DRF
    • 公平调度器:FIFO、FAIR、DRF

3.2 公平调度器—缺额

  • 公平调度器设计目标是:在时间尺度上,所有作业获得公平的资源。某一时刻一个作业应获资源和实际获取资源的差距叫“缺额”。
  • 调度器会优先为缺额大的作业分配资源

3.3 公平调度器队列资源分配方式

  1. FIFO策略:
    ​ ​ ​ ​ ​ ​ ​ ​ 公平调度器每个队列资源分配策略如果选择FIFO的话,此时公平调度器相当于容量调度器。

  2. FAIR策略:
    ​ ​ ​ ​ ​ ​ ​ ​ FAIR策略(默认)是一种基于最大最小公平算法实现的资源多路复用方式,默认情况下,每个队列内部采用该方式分配资源。这意味着,如果一个队列中有两个应用程序同时运行,则每个应用程序可得到1/2的资源;如果三个应用程序同时运行,则每个应用程序可得到1/3的资源。

    ​ ​ ​ ​ ​ ​ ​ ​ 具体资源分配流程和容量调度器一致;1. 选择队列 2. 选择作业 3. 选择容器。以上三步,每一步都是按照公平策略分配资源。

    • 实际最小资源份额:mindshare=Min(资源需求量【4】,配置的最小资源【2】)mindshare = Min(资源需求量【4】,配置的最小资源【2】)mindshare=Min(资源需求量【4】,配置的最小资源【2】)
    • 是否饥饿:isNeedy=资源使用量【1】<mindshare(实际最小资源份额)【2】isNeedy = 资源使用量【1】 < mindshare(实际最小资源份额)【2】isNeedy=资源使用量【1】<mindshare(实际最小资源份额)【2】
    • 资源分配比:minShareRatio=资源使用量【1】/Max(mindshare【2】,1)minShareRatio = 资源使用量【1】/Max(mindshare【2】,1)minShareRatio=资源使用量【1】/Max(mindshare【2】,1)
    • 资源使用权重比:$useToWeightRatio = 资源使用量/权重

    例子:

    ​ 对象1:资源需求量【4】,配置的最小资源【2】,资源使用量【3】,权重【1】

    ​ 对象2:资源需求量【4】,配置的最小资源【2】,资源使用量【1】,权重【1】

    比较对象1和对象2:对象1和对象2的最小资源份额mindshare=2mindshare = 2mindshare=2,对象1不饥饿,对象2饥饿。因此对象2优先。

    ​ 对象1:资源需求量【4】,配置的最小资源【2】,资源使用量【3】,权重【1】

    ​ 对象3:资源需求量【4】,配置的最小资源【2】,资源使用量【5】,权重【2】

    比较对象1和对象3:对象1和对象3都不饥饿,对象1的资源使用权重比为3,对象3的资源使用权重为2.5,因此对象3优先。

    ​ 对象2:资源需求量【4】,配置的最小资源【2】,资源使用量【1】,权重【1】

    ​ 对象4:资源需求量【4】,配置的最小资源【2】,资源使用量【0.5】,权重【1】

    比较对象2和对象4:对象2和对象4的实际最小资源份额都是2,且都是饥饿。对象2的资源分配比是minShareRatio=1/Max(2,1)=0.5minShareRatio = 1/Max(2,1)=0.5minShareRatio=1/Max(2,1)=0.5,对象4的minShareRatio=0.5/Max(2,1)=0.25minShareRatio = 0.5/Max(2,1)=0.25minShareRatio=0.5/Max(2,1)=0.25,因此对象4优先。

3.4 公平调度器资源分配算法


  1. 队列资源分配

    需求:集群总资源100,有三个队列,对资源的需求分别是:queueA->20,queueB->50,queueC->30

  2. 作业资源分配

  • 不加权重(关注点是Job个数):

  • 加权(关注点是Job的权重)

  1. DRF策略

    ​ ​ ​ ​ ​ ​ ​ ​ DRF(Dominant Resource Fairness),在之前所说的资源,都是单一标准,例如只考虑内存(也是Yarn默认的情况)。但是很多时候资源有很多种,例如内存,CPU,网络宽带等,这样很难衡量两个应用应该分配的资源比例。

    ​ ​ ​ ​ ​ ​ ​ ​ 在Yarn中,可以用DRF来调度:

    ​ ​ ​ ​ ​ ​ ​ ​ 假设集群一共有100个CPU和10T内存,应用A需要(2CPU,300G),应用B需要(6CPU,100GB)。则两个应用分别需要A(2%CPU,3%内存)和B(6%CPU,1%内存)的资源,这就意味着A是内存主导的,B是CPU主导的,针对这种情况,可以选择DRF策略对不同应用进行不同资源(CPU和内存)的一个不同比例的限制。

Yarn调度器和调度算法(From 尚硅谷)相关推荐

  1. Yarn调度器和调度算法(FIFO、容量调度器 与 公平调度器)

    目录 Yarn调度器和调度算法 一.先进先出调度器(FIFO) 二.容量调度器(Capacity Scheduler) 1. 容量调度器特点 2. 容量调度器资源分配算法 三.公平调度器(Fair S ...

  2. 【深入浅出 Yarn 架构与实现】5-3 Yarn 调度器资源抢占模型

    本篇将对 Yarn 调度器中的资源抢占方式进行探究.分析当集群资源不足时,占用量资源少的队列,是如何从其他队列中抢夺资源的.我们将深入源码,一步步分析抢夺资源的具体逻辑. 一.简介 在资源调度器中,以 ...

  3. kubernetes 简介:调度器和调度算法((Affinity/Anti-Affinity, Taints and Tolerations, 自定义调度器 )

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 简介 scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: ...

  4. Hadoop 3.x(Yarn)----【Yarn 资源调度器】

    Hadoop 3.x(Yarn)----[Yarn 资源调度器] 1. Yarn 基础架构 2. Yarn 工作机制 3. 作业提交全过程 4. Yarn 调度器和调度算法 1. 先进先出调度器(FI ...

  5. 【学习笔记】尚硅谷Hadoop大数据教程笔记

    本文是尚硅谷Hadoop教程的学习笔记,由于个人的需要,只致力于搞清楚Hadoop是什么,它可以解决什么问题,以及它的原理是什么.至于具体怎么安装.使用和编写代码不在我考虑的范围内. 一.Hadoop ...

  6. 【十八掌●内功篇】第六掌:YARN之YARN资源调度器

    这一篇博文是[大数据技术●降龙十八掌]系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌 系列文章: [十八掌●内功篇]第六掌:YARN之架构和原理 [十八掌●内功篇]第六掌:YARN之Reso ...

  7. Superior Scheduler:带你了解FusionInsight MRS的超级调度器

    摘要:Superior Scheduler是一个专门为Hadoop YARN分布式资源管理系统设计的调度引擎,是针对企业客户融合资源池,多租户的业务诉求而设计的高性能企业级调度器. 本文分享自华为云社 ...

  8. 【视频分享】尚硅谷Java视频教程_Spring注解驱动开发视频教程

    <Spring注解驱动开发>是一套帮助我们深入了解Spring原理机制的教程: 现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了S ...

  9. Vue3 生命周期Hooks函数与调度器Scheduler的原理

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 写在最前:本文章的目标 Vue3的生命周期的实现原理是比较简单的,但要理解整个Vue3的生命 ...

最新文章

  1. 百亿数据,毫秒级返回,如何构建?
  2. 电脑DIY之内存传输标准
  3. 一门杀人于无形的艺术——社会工程
  4. c语言gets()函数与它的替代者fgets()函数
  5. WEB Service 下实现大数据量的传输
  6. SpringBoot中@PropertySource和@ImportResource以及@Bean
  7. idea卡顿的解决方法_lt;绝地求生/PUBG/解决卡顿方法(停机9小时)维护gt;9月16日(星期三) 08点30分amp;崩溃...
  8. 并联机器人市场呈现快速增长之势
  9. [原创]JavaScript应用技巧集合
  10. leetcode每日刷题计划-简单篇day6
  11. EOJ-1708//POJ3334
  12. 手动安装ojdbc6
  13. Python爬虫QQ空间好友说说
  14. 路由器、交换机、网关
  15. 计算机网络教程_第三章数据链路层_整理与复习
  16. 轻博客之点点推他模式分析
  17. IDEA 启动本地 Flink Web UI
  18. AndroidStudio:The application‘s minSdkVersion is newer than the device API level.
  19. 迷茫的程序员和中国软件业
  20. Kafka-Eagle中的ke数据库创建

热门文章

  1. Hadoop源码分析8: IPC流程(3)客户端的clients、connections、calls复用
  2. 《球机隐私遮蔽定位解析及ONVIF实现》
  3. adobe acrobat reader dc2020中文版
  4. Mixly06:国际摩尔斯电码救难信号SOS
  5. 【基础理论】专题1 泛化到底是什么?
  6. java版spring cloud+spring boot 社交电子商务平台(二)Eureka(服务注册和服务发现基础篇)
  7. 遭遇 Trojan.DL.Agent.cjy、ltnward.exe、34E0AE22.dll 等
  8. YB233单通道触摸感应芯片上电自复位 环境自适应,性价比高适用于 触摸台灯 移动电源小家电等替代传统触点按键
  9. 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)
  10. 【原创】写在百度一面后 (原网易博客搬迁过来)