Hadoop3教程(二十三):Yarn的三大调度器

news2024/11/15 19:50:31

文章目录

  • (129)FIFO调度器
  • (130)容量调度器
    • 特点
    • 资源分配算法
  • (131)公平调度器
    • 特点
    • 缺额的定义
    • 队列资源分配方式
      • 基于FIFO策略
      • 基于Fair策略
        • 资源分配算法
      • DRF策略
  • 参考文献

(129)FIFO调度器

教程使用的是Hadoop3.1.3版本,截止这个版本,Hadoop里的作业调度器主要有三种:FIFO(先进先出)、容量(Capacity Scheduler)和公平(Fair Scheduler)。其中3.1.3版本的默认调度器是容量调度器

CDH框架默认的调度器是公平调度器

具体设置可见: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>

FIFO调度器,即First in first out,是很常见的数据结构了,单队列,先进的任务先出,跟现实中的排队一样。

就不详细介绍了。贴一个教程里的图吧。

在这里插入图片描述

生产环境下基本不用FIFO调度器,因为它是单队列的,无法把集群资源应用到极致。它唯一的好处可能就是原理比较好懂。

(130)容量调度器

容量调度器,即Capacity Scheduler,是Yahoo开发的多用户调度器,也是Hadoop的默认调度器

所谓的多用户调度,是指多个用户可以同时提交任务,多用户、多应用程序共享集群。

特点

容量调度器,有这么几个特点:

1) 多队列。容量调度器,更像是对FIFO调度器的扩充,相比FIFO只有一个队列,容量调度器同时存在多个队列,每个队列配置固定的资源量,而队列内部默认采用FIFO策略,注意,是FIFO策略,每个队列里,先进的任务先出。

2) 容量保证。管理员可以为每个队列设置资源最低容量和资源使用上限,资源最低容量是一个保证值,队列实际分配到的容量,不应该低于这个保证值。

3) 灵活性。如果一个队列中的资源当前有剩余,可以暂时共享给那些需要资源的队列。但是如果有新的应用提交到前者,即前者需要资源的时候,其他队列借调的资源应该马上归还给前者。(其他队列一般不会马上停掉自己的任务来释放资源,可能会等待运行完成后释放,或者是马上释放部分资源)

4) 支持多租户:

  • 支持多用户共享集群,以及多应用程序同时运行。
  • 为了防止同一个用户的作业独占全部资源,容量调度器也会对同一用户所提交作业所占的资源总量进行限制。比如说限定用户A,同一时间最多占用5G资源。

资源分配算法

那在实际的生产运行中,容量调度器会怎么给各个队列、job和容器分配资源的呢?

接下来简单介绍一下容量调度器的资源分配算法:

  • 队列资源分配:从root开始,使用深度优先遍历算法优先选择资源占用率低的队列,分配资源。(这样做的目的其实是尽量让占用资源少的任务尽快结束,这样就可以释放出更多的资源,来支持其他队列)

  • 作业资源分配:默认按照作业的优先级和提交时间,顺序分配资源。假设作业A先提交,作业B后提交,但是作业B的优先级更高,一般来讲,先提交的作业A会优先得到一部分资源(如果当时没有其他作业在等待资源的话)。所以优先级高的作业B在后提交之后,顶多多获得一部分资源作为补偿。

  • 容器资源分配(一个作业内部会有多个容器):

    • 按照容器的优先级分配资源;

    • 如果优先级相同,会按照数据本地性原则,即类似之前介绍过的机架感知距离,优先级从高到低依次是:

      • 容器和数据在同一节点上;
      • 容器和数据在同一机架;
      • 容器和数据不在同一节点,也不在同一机架上;

      按照数据本地性来排优先级的主要目的,还是为了让本来就可以最快结束的任务更快结束,从而加快释放出资源。比如说容器和数据在同一节点时,网络IO等的消耗是最小的,所以在相同资源供给的情况下,它结束的速度肯定更快。

以上过程可以参考下图辅助理解:

在这里插入图片描述

(131)公平调度器

公平调度器,即Fair Scheduler,是Facebook开发的多用户调度器,同时也是CDH框架默认的调度器。

特点

公平调度器也是同时存在多个队列,但不同于容量调度器,公平调度器的每个队列内部,所有任务平分共享资源,主打的就是一个公平。

与容量调度器相比,共同点:

  • 多队列;
  • 管理员同样可以为每个队列设置资源最低保证和资源使用上限;
  • 灵活性:队列空闲资源可以分配给其他队列;
  • 多租户:支持多租户共享集群和多应用程序同时运行。可以限制每个用户同一时间提交作业的资源总量;

区别是:

  • 核心调度策略不同:容量调度器在分配资源的时候,优先考虑资源占用率低的队列。公平调度器则优先考虑对资源的缺额比例较大的队列。
  • 公平调度器里,每个队列可以单独设置资源分配方式:
    • 容量调度器可选的分配方式是FIFO、DRF;
    • 公平调度器是FIFO、FAIR、DRF;

缺额的定义

在公平调度器里,什么是缺额?

如图:

在这里插入图片描述

假设当前队列里同时在运行4个任务,第5个任务进来的时候,公平起见,已运行的这4个任务得赶紧空点资源出来给job_5,但是现实里这不是说空就能空出来的,所以在这段时间里,该队列就属于有缺额的队列,其中缺额的作业就是job_5。

教程里是这么描述的:某一时刻一个作业应获取的资源和实际获取的资源的差距,就叫缺额。

调度器会优先为缺额更大的队列,或者说作业,分配资源。

队列资源分配方式

基于FIFO策略

那么公平调度器就会蜕变成容量调度器。

基于Fair策略

这是公平调度器的默认策略,它是一种基于最大最小公平算法实现的资源多路复用方式。

默认情况下,每个队列内部都采用这种策略来分配资源。比如说,如果一个队列有2个作业在同时运行,那么每个作业可以得到这个队列1/2的资源。如果是3个作业在同时运行,则每个作业理论上可以得到整个队列1/3的资源。

具体的资源分配流程和容量调度器一致:先队列,然后作业,最后容器。每一步都是按照公平策略分配资源。

介绍一些概念:

实际最小资源份额:mindshare = Min(当前作业的资源需求量,配置的最小资源)

是否饥饿:isNeedy = 资源使用量 < mindshare(实际最小资源份额)

资源分配比:minShareRatio = 资源使用量 / Max(mindshare, 1)

假设一个作业,资源当前使用量是1,资源需求量是3,配置的最小资源是2,那么它就属于饥饿作业,资源分配比是50%,如果没有分配比比它还低的作业,那么之后分配的时候会优先将资源分配给它。所以这个"资源分配比"是分配时很重要的一个指标。

资源使用权重比:useToWeightRatio = 资源使用量 / 权重

如图,总结一下:

在这里插入图片描述

  • 如果只有一个作业饥饿,那就直接把资源分配给它就可以;

  • 如果都饥饿的话,资源分配比小的作业优先获得资源;

  • 如果好几个作业都饥饿,且资源分配比一样呢?这时候会按照提交时间顺序分配资源;

  • 如果大家都不饥饿,则会按照资源使用权重比,小的优先,如果相同,再按照提交时间顺序分配。

资源分配算法

1) 队列资源分配:

一般会进行两轮分配。

第一轮分配是公平分配,假设总资源量是100,共3个队列,那第一轮会给每个队列分配33.33;

第二轮是队列间资源调度,因为每个队列对资源的需求量是不一样的,比如说A需要20,B需要50,C需要30,那么明显AC资源有空余,而B有缺额,那么会从AC拿出空余资源,优先补给B。

在这里插入图片描述

2) 作业资源分配:

不加权的情况下,重点关注job的个数:

假设当前队列有12个单位的资源,4个job,且job_1需求资源为1,job_2是2,job_3是6,job_4是5。

摆明了无法全部满足需要。

那么公平调度器会怎么分配资源呢?

第一轮,12/4=3,所以给每个job分配3单位资源,于是:

  • job_1多给了2单位,
  • job_2多给了1单位,
  • job_3少3个单位,
  • job_4少2个单位;

第二轮,把多余的资源收集起来,2+1=3单位,继续公平分配,3/2=1.5。于是:

  • 再给job_3分配1.5单位,
  • 给job_4再分配1.5;

如此循环往复,直到没有空闲资源。

如果是在加权情况下,则重点关注job的权重:

假设该队列总资源是16,有4个job,每个job的资源需求和权重如下:

job_1job_2job_3job_4
需求42104
权重5812

这个例子举的很有意思,就是需求大的权重小,需求小的权重大。

第一轮:

16/(5+8+1+2)=1

job_1,分配5*1=5,多1;

job_2,分配8*1=8,多6;

job_3,分配1*1=1,少9;

job_4,分配2*1=2,少2;

第二轮:

把多余的资源汇总起来,即1+6=7,开始为job_3和job_4分配资源;

然后7/(1+2)=2.33

job_3,继续分配1*2.33=2.33,还少9-2.33=6.67;

job_4,继续分配2*2.33=4.66,多了2.66;

第三轮:

空闲的资源是2.66,就按上面流程给job_3分配了。

如此循环往复,直到没有空闲资源。

这就是加权下的公平。

DRF策略

DRF,即Dominant Resource Fairness。

我们之前所说的资源,实际上就是指内存。但其实现实中,我们需要的资源有很多种,例如内存、CPU、网络带宽等,在多种资源的前提下,我们该如何衡量不同任务间应该分配的资源比例?

假设集群一共有100个CPU和10T内存,应用A需要(2CPU,300GB),应用B需要(6CPU,100GB),那么换算下比例,应用A需要(2%CPU,3%内存),应用B需要(6%CPU,1%内存),那我们就可以说应用A是内存导向的,应用B是CPU导向的。然后具体考虑的时候就可以考虑重点倾向的资源。

大概吧,教程没有详细再说。等有时间我再查查。

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R6G azide, 5-isomer具有良好的水溶性,2135330-71-9

试剂 | 基础知识概述&#xff08;部分&#xff09;: 英文名称&#xff1a;R6G azide, 5-isomer CAS&#xff1a;2135330-71-9 分子式&#xff1a;C30H32N6O4 分子量&#xff1a;540.61 规格标准&#xff1a;10mg&#xff0c;25mg&#xff0c;50mg&#xff0c;可提供mg级以…

C1N短网址 | 核心专利(1) - 基于随机字符实现的网址缩短

1.短链接介绍 举个例子&#xff0c;现在我的博客地址是这个&#xff1a;https://blog.csdn.net/liwei128/article/details/91358071 (55个字符)&#xff0c;我通过短链接服务可以将上面的地址转成http://m.c1n.cn (15个字符) 那我为什么要将原有的URL转成较短的链接呢&#x…

C++QT---QT-day3

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为&…

https证书配置(nginx)

HTTPS 是什么 HTTPS 是一种应用层协议&#xff0c;是一种透过计算机网络进行安全通信的传输协议&#xff0c;HTTPS 经由 HTTP 进行通信&#xff0c;但是在 HTTP 的基础上引入了一个加密层&#xff0c;使用 SSL/TLS 来加密数据包&#xff0c;HTTPS 开发的主要目的&#xff0c;是…

重磅!海云安联合深圳大学共同举行“人工智能联合实验室”揭牌仪式

2023年10月17日&#xff0c;大数据系统计算技术国家工程实验室-深圳海云安网络安全技术有限公司人工智能联合实验室(以下简称“联合实验室” )揭牌仪式在深圳大学致真楼图灵会议室举行。 大数据国家工程实验室执行主任李坚强、成果转化办公室主任王利、健康大数据研究中心副主任…

无代码玩转web UI自动化

可以直接进入官网下载开源版或点击右上角体验企业版体验 RunnerGo UI自动化平台 RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块&#xff0c;覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建&#xff0c;内嵌高度…

最新AI创作系统ChatGPT网站H5源码V2.6.4+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt预设应用

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

C语言实现面向对象编程 | 干货

前言 GOF的《设计模式》一书的副标题叫做“可复用面向对象软件的基础”&#xff0c;从标题就能看出面向对象是设计模式基本思想。 由于C语言并不是面向对象的语言&#xff0c;C语言没有直接提供封装、继承、组合、多态等面向对象的功能&#xff0c;但C语言有struct和函数指针。…

2023年中国精准护肤发展现状及趋势分析:未来皮肤实现定制化诊断成趋势[图]

精准护肤是深度融合光电科技与精准医学在皮肤上的实践&#xff0c;以皮肤问题为导向通过研究挖掘各类皮肤问题发生发展的生理机制、环境因素&#xff0c;找寻相应的靶点并选择活性成分与光电技术&#xff0c;利用现代医疗技术实现能量/成分靶向传递&#xff0c;并通过不同人群的…

选择低代码开发,我轻松了不少!

一、传统软件开发现状 随着对定制应用程序的需求激增&#xff0c;很明显传统的开发方法无法跟上。 传统的瀑布式应用程序开发过程需要许多具有高度专业化角色的人员参与。例如&#xff0c;该过程需要&#xff1a; 业务分析师创建功能需求技术分析师将这些需求转化为技术规范创建…

mysql宋红康第一篇

mysql宋红康第一篇 索引的数据结构 为什么使用索引&#xff1f; 索引是存储引擎用于快速找到数据记录的一种数据结构&#xff0c;就好比一本教科书的目录部分&#xff0c;通过目录中找到对应文章的页码&#xff0c;便可快速定位到需要的文章。MySQL中也是一样的道理&#xf…

前端Sortable拖拽实现排序

下载地址: https://download.csdn.net/download/dongyan3595/85111182 <script type"text/javascript" src"moduleSet.js"></script> <script type"text/javascript" src"Sortable.min.js"></script> 前端…

读《Gaitset: Regarding gait as a set for cross-view gait recognition》

2019在AAAI&#xff08;还有一版叫GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition&#xff0c;大体上一样&#xff09; 摘要 现有的步态识别方法要么利用步态模板&#xff0c;难以保存时间信息&#xff0c;要么利用保持不必要的顺序约束的步态序列&#x…

面试题解答:Spring Lifecycle 和 SmartLifecycle 有何区别?

当我们想在 Spring 容器启动或者关闭的时候&#xff0c;做一些初始化操作或者对象销毁操作&#xff0c;我们可以怎么做&#xff1f; 注意我这里说的是容器启动或者关闭的时候&#xff0c;不是某一个 Bean 初始化或者销毁的时候&#xff5e; 1. Lifecycle 对于上面提到的问题…

加密行业焦点:本周五,关注灰度GBTC转型是否有解?

密切关注比特币交易所交易基金&#xff08;ETF&#xff09;进展的投资者&#xff0c;正在将目光聚集到本周五。由于众多比特币现货ETF都被推迟到明年的一月中&#xff0c;市场现在最关注的就是灰度GBTC转型是否有解。 据报道&#xff0c;华盛顿特区的法院将在本周五发布一项命令…

10月19日星期四今日早报简报微语报早读

10月19日星期四&#xff0c;农历九月初五&#xff0c;早报微语早读分享。 1、浙江发现3000年前的夏商宫殿级遗址&#xff1b; 2、江苏省消保委&#xff1a;“萝卜刀”玩具广告应去除暴力等不良暗示&#xff1b; 3、广东个体工商户数量突破1000万户&#xff1b; 4、国家统计…

MT3520B 丝印AS20B 2A电流 2.3V-6V输入、1.5MHz同步降压转换器

MT3520B是一个1.5MH的恒定频率电流模式降压转换器。它非常适合需要单节离子电池提供高达2A电流的便携式设备&#xff0c;同时在峰值负载条件下仍能实现90%以上的效率。该MT3520B也可以运行在100%的低压差操作占空比&#xff0c;延长便携式系统的电池寿命&#xff0c;而轻载操作…

【高危安全通告】Oracle 10月月度安全漏洞预警

近日&#xff0c;安全狗应急响应中心关注到Oracle官方发布安全公告&#xff0c;共披露出在Oracle Weblogic中存在的6个高危漏洞。 漏洞描述 CVE-2023-22069&#xff1a;Oracle Weblogic 远程代码执行漏洞 Oracle WebLogic Server存在远程代码执行漏洞&#xff0c;该漏洞的CVS…

审批流程设计

审批流程界面的设计有多种多样。本文介绍其中一种形式。如下图所示&#xff1a; 做好审批流程需注意2个点&#xff0c;定制审批流程与审批环节介绍。定制审批流程&#xff0c;可以根据单据种类&#xff08;或其他因素&#xff09;定制不同的审批流环节&#xff0c;从而适应多种…

Kali Linux 安装搭建 hadoop 平台 详细教程

1&#xff09;前期环境准备&#xff1a;&#xff08;虚拟机、jdk、ssh&#xff09; 2&#xff09;SSH相关配置 安装SSH Server服务器&#xff1a;apt-get install openssh-server 更改默认的SSH密钥 cd /etc/ssh mkdir ssh_key_backup mv ssh_host_* ssh_key_backup 创建新…