0. 背景

这本是一个比较冷门的知识点,只是因为在看《Hadoop权威指南 第4版》的时候,对以下内容有点疑问,查了算法的出处《Dominant Resource Fairness: Fair Allocation of Multiple Resource Types》这篇论文,发现这里其实是写错了,或者可能是翻译的问题。

1. Yarn的三种调度器

Yarn中有三种资源调度器:FIFO调度器(FIFO Scheduler)、容量调度器(Capacity Scheduler)、公平调度器(Fair Scheduler)。

1.1 FIFO调度器

简介:顾名思义,FIFO调度器把应用放在队列里,按照先进先出的提交顺序执行应用。

优点:简单,不需要额外配置。

缺点:不适合共享集群。大应用会占满整个集群的资源,导致小应用长时间等待。

1.2 容量调度器

 简介:容量调度器设有一个专门的队列给小作业使用。

优点:大作业不会占满全部资源,小作业不需要长时间等待大作业完成。

缺点:整个集群的资源利用率降低了,大作业需要更长的时间来执行。

1.3 公平调度器

  简介:公平调度器旨在为所有运行的应用公平地分配资源。

优点:同时解决了FIFO大作业占满整个集群资源的问题和Capacity小作业队列空闲导致集群资源利用率降低的问题。

缺点:存在延迟问题,后面的作业需要等待前面的作业让出资源。

2. 公平调度器中的队列级别调度策略

前文简要介绍了Yarn三种调度器,其中公平调度器不仅支持一个队列中的资源公平调度,也能完成多个队列的资源公平共享,如用户队列间的公平共享。

公平调度器中的队列级别调度策略有三种:公平策略(默认)、FIFO策略、drf策略(Dominant Resource Fairness)。drf策略也正是本文探讨的重点。

3. 主导资源公平性策略

对于单一类型资源,如内存的调度,这种情况相对简单。但是有多种类型资源需要调度时,事情就会变得复杂。如应用A对CPU的需求很大而内存需求很小,应用B对内存的需求很大而CPU的需求很小,如何实现资源的公平分配呢?《Dominant Resource Fairness: Fair Allocation of Multiple Resource Types》提出了主导资源公平性策略(Dominant Resource Fairness),简称drf。

我们先通过论文中的例子对drf有个初步了解。假设集群中共有9个CPU和18GB内存。用户A请求的每份容器资源是<1CPU,4GB>,用户B请求的每份容器资源是<3CPU,1GB>。A的一个容器占整个集群1/9的CPU,2/9的内存,所以A的主导资源是内存。B的一个容器占整个集群1/3的CPU,1/18的内存,所以B的主导资源的CPU。

设A最多能请求的容器数为x,B最多能请求的容器数为y,论文中给出了一下不等式实现主导资源公平算法。主要看第三个式子,表示的是主导资源在集群中的占比。

这个算法其实很简单。我们尝试画图来理解。

可以看到,最终整个集群的CPU被完全利用,而内存仍有剩余。算法实现如下:

4. 《Hadoop权威指南》示例中drf的正确解法

所以,最终B将分到整个集群2/3的容器数,A将分到1/3的容器数。

Yarn主导资源公平性调度算法相关推荐

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

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

  2. 主导资源公平DRF:多种资源类型的公平分配

    目录 前言 摘要 1.介绍 2.动机 3.分配特性 4.主导资源公平(DRF) 4.1举个栗子 4.2DRF调度算法 4.3加权DRF 5.可选的公平分配策略 5.1资产公平 5.2收入均等的竞争均衡 ...

  3. Yarn调度器和调度算法(From 尚硅谷)

    个人学习整理,所有资料来自尚硅谷 B站学习连接:添加链接描述 Yarn调度器和调度算法 ​ 目前,Hadoop作业调度器主要有三种:FIFO.容量(Capacity Scheduler)和公平(Fai ...

  4. 60-124-340-源码-运行模式-Yarn-通过 YARN 的资源本地化技术减少 Flink 在 YARN 上的部署时间

    1.美图 2.概述 在使用 Flink 的生产实践中,我们发现采用 Flink on YARN 的部署方式时,将大量用户依赖的 JAR 包和其他文件上传到对应的容器中是从用户发送部署请求到应用实际运行 ...

  5. ideal 本地jar依赖_通过 YARN 的资源本地化技术减少 Flink 在 YARN 上的部署时间

    在使用 Flink 的生产实践中,我们发现采用 Flink on YARN 的部署方式时,将大量用户依赖的 JAR 包和其他文件上传到对应的容器中是从用户发送部署请求到应用实际运行起来的重要耗时操作. ...

  6. troubleshooting之解决YARN队列资源不足导致的application直接失败

    1.YARN队列资源不足导致的application直接失败的 现象       如果说,你是基于yarn来提交spark.比如yarn-cluster或者yarn-client.你可以指定提交到某个 ...

  7. Hadoop Yarn 多用户资源隔离

    一.前言 已完成Hadoop 集群部署,可参照以下链接: https://gaoming.blog.csdn.net/article/details/118995746 https://gaoming ...

  8. flink on yarn模式下释放flink占用yarn的资源

    除了关闭session.sh启动的进程以外, kill YarnJobClusterEntrypoint所在的jps进程 完成上述操作后,再次前往yarn界面,就可以看到队列中占用的资源都被释放了.

  9. 【Ambari】设置yarn队列资源为绝对值[memory=10240,vcores=12,yarn.io/gpu=4]

    目录 1.介绍 2 修改资源队列 API步骤 2.1 获取capacity-scheduler配置的tag和version 2.2 获取capacity-scheduler指定版本的配置 2.3 通过 ...

最新文章

  1. 修改mysql的时间/时区
  2. Ngrok实现远程控制和操作树莓派(Raspbian系统)
  3. 人工智能的影响调查_调查报告|文科大学生群体对于人工智能影响 就业的认知程度:基于访谈的质性研究...
  4. 轻量级实用PDF转换工具
  5. Java 文件上传下载管理器(控制台)
  6. 设计模式之结构型(4)-桥接模式(Bridge)
  7. 合成存储方法,局部/全局变量
  8. js实现php中sleep()延时的功能
  9. PBS_HAS_CHANGED ~ GET_SAP_MENU_INFO
  10. Kubernetes里ingress配置的一些例子
  11. iOS教程:详解iOS多图下载的缓存机制
  12. java 微信 jssdk 分享朋友圈_微信JS-sdk分享到朋友圈无效
  13. 运维架构师-并不遥远的彼岸
  14. asp.net Checkbox 绑定自定义属性
  15. “熊猫烧香”病毒的原理
  16. 计算机基础文化知识板书,计算机文化基础考试
  17. 如何构建本地化的blast2go数据库
  18. mysql datasource.url_DataSource配置
  19. Android平板/手机,使用qq视频通话图像旋转90度
  20. Node.js:Dotenv从`.env` 文件加载环境变量的库

热门文章

  1. 如何把流氓软件删除干净
  2. libstdc++.so.6库环境配置
  3. 2.【OS】vscode下载很慢的问题
  4. shellmad-18_C++新特性 智能指针的简易实现及添加模板
  5. 【opencv初学者】2、视频的读取
  6. ThingsBoard添加高德地图
  7. DDD 为什么能火起来?和微服务有啥关系?
  8. docker快速部署
  9. 菜鸟教程:HTML表单详解
  10. 汇编语言-怎样查看标志位、怎样生成列表文件、列表文件格式