hadoop之YARN

2023-10-26

在YARN中,资源调度器(Scheduler)是ResourceManager中的重要组件,主要负责对整个集群(CPU,内存)的资源进行分配和调度,分配以资源Container的形式分发到各个应用程序中(如MapReduce作业),应用程序与资源所在节点的NodeManager协作利用Container完成具体的任务(如Reduce Task)。
框架默认提供了三种Scheduler:
1)FIFO Scheduler:
先进先出即先来后到。
2)Capacity Scheduler:
以Capacity为中心,把资源划分到若干个队列中,各个队列内根据自己的逻辑分配资源。例如队列A可以调度的资源可以占80%,队列B占有剩下的20%,各队列接受相应的作业请求。
3)Fair Scheduler:
秉承公平性原则,尽可能让各个作业得到的资源平均。作业2提交之后,原本Job1占有的资源拨出一半给作业2.

采用Capacity调度的集群,资源被划分到一系列的Queue中,每个队列管理整个集群资源的一部分。队列内部可以再嵌套,形成层级结构。队列内资源采用FIFO的方式。通常情况下,作业不能使用超过队列容量的资源,但是如果有空闲的资源,则调度器会为作业分配资源,即使这会导致队列超出容量限制。该特性叫队列弹性.为了避免占用过多其他队列的资源,可配置一个最大容量,队列只能使用该容量以内的资源,但是会牺牲一定的弹性。在这个层次结构中,root队列下定义了prod和dev两个队列,假设占有集群资源容量的比例分别为40%和60%。dev下又分为各占50%容量的eng和science队里。配置文件.队列划分好之后,应用程序也需要配置使用哪一个队列中的资源。例如,对于MapReduce作业,mapreduce.job.queuename属性配置作业所使用的队列。如果没有指定队列,作业被放到一个叫default的队列中。

fair scheduler试图保证运行中的应用程序都能分配到平均的资源,这里的平均是通过资源的数量来定义的,例如内存大小。
假设有两个用户A和B,分别持有队列queue A和B。在一开始的时候,A启动了job1,此时因为B没有资源需要,因此job1霸占了所有资源。一段时间后B启动了job2,一段时间后(等待job1释放资源),job1和job2各占一半资源。如果用户B接着启动job3,则job2和job3将共享队列B,也就是各占集群总资源的25%。当job2结束之后,job3占据整个队列B(50%)。
因此我们得出一个结论,公平性是指用户之间的公平性,而不是应用之间的公平性
默认使用的是Capacity Scheduler

优先权
当一个集群处于繁忙状态时,如果我们提交一个作业到其中一个空的队列,此时需要等待其他作业释放资源才能开始运行。为了使得等待释放的时间可以控制在预测范围内,Fair Scheduler支持优先权。
优先权运行Scheduler杀死占用(按公平原则划分)别的队列的Container,腾出空间被占用队列的应用。优先权可能会降低集群的效率,因为被杀死的Container都需要重新执行。杀死之前的等待时间通过allocaion文件中的queue元素内的fairSharePreemptionTimeut元素配置,而fairSharePreemptionThreshold和defaultFairSharePreemptionThreshold则用于设置等待时间内,原本属于队列的资源可用比例,例如设为0.5,表示当等待时间到时,如果原本属性该队列(按照公平原则)的资源可用比例还没有达到一半,则会启动杀死其他应用的Container。

延时调度,当应用程序请求在某个特定的节点上运行时,如果该节点刚好处于忙碌状态无法分配给应用,一种选择方式是就近选择同一机架中的其他节点。但是在实际中发现,稍微等一小段时间,很有可能就能够分配到指定的节点,进而提高集群效率。这个特性叫延迟调度。

默认情况下,集群中的NodeManager每一秒中都想RM发送心跳,心跳张包含节点当前正在运行的Container以及可用于新Container的资源。因此每次心跳都是一个调度机会。当启用延迟调度时,对于有节点位置要求的资源请求,调度器不会简单地使用第一次调度机会(牺牲数据locality),而是会尝试等待直到最大次数的调度机会,一旦发现符合要求的调度机会,及分配给应用。如果直到最大次数还是没有合适的节点资源,则放宽数据locality要求,退而求其次采用同一机架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hadoop之YARN 的相关文章

随机推荐

  • html js动态时间轴,jQuery时间轴插件timeline.js

    插件描述 timeline js是一款jQuery时间轴插件 通过timeline js插件 你可以很容易的制作出水平或垂直时间轴效果 并可以像幻灯片一样前后切换时间点 简要教程 timeline js是一款jQuery时间轴幻灯片插件 通
  • C51单片机重要知识点总结

    文章目录 文章目录 00 写在前面 01 C51基本数据类型总结 02 C51数据类型扩充定义 03 关于单片机 04 单片机工作的基本时序 05 单片机复位 06 80C51的中断系统 07 定时器 08 串口通信 09 C语言基础 10
  • Unable to cast object of type ‘System.Byte‘ to type ‘System.Boolean‘

    mysql数据库 存储的一个字段类型为tinyint 查询数据的时候设置的数据类型bool 查询结果报错 解决方法 将为空的数据都设为0 查询资料时 tinyint在查询时会自动对应成bool类型 问题原因时数据不可为空 即使设置成bool
  • Hi3516Dv300 平台使用MIPI Tx点屏

    背景 公司新做了一块3516Dv300的开发板 其中有MIPI Tx接口 刚好公司库房还有好几百块的LCD屏 LCD屏是800x480的 还是原装屏 不用掉怪可惜的了 所以就让硬件的同事化了个转接板 使用的芯片是ICN6211 这货最大分辨
  • python pip 安装 删除缓存(cache)

    今天pip安装包时 一直使用缓存 非常不爽 pip删除缓存 安装操作 pip no cache dir install 包名 If using pip 6 0 or newer try adding the no cache dir opt
  • 什么是1G/2G/3G/4G/5G

    什么是1G 2G 3G 4G 5G 参考 http www 360doc com content 14 1213 22 5458405 432718054 shtml 介绍 1G 表示第一代移动通讯技术 在20世纪80年代前期 第一代模拟制
  • CIMCO Edit2022安装教程(非常详细)从零基础入门到精通,看完这一篇就够了(附安装包)

    软件下载 软件 CIMCO Edit 版本 2022 语言 简体中文 大小 251 79M 安装环境 Win11 Win10 Win8 Win7 硬件要求 CPU 2 0GHz 内存 4G 或更高 下载通道 百度网盘丨64位下载链接 htt
  • CommonJS是啥东西嘞

    AMD AMD要用define定一个模块 define dep1 dep2 function dep1 dep2 return function 包目录 package json包 bin用于可的目 lib用于JavaScript的目 do
  • sqli-libs基础篇总结(1-22)

    1 关于sqli labs 这个是sql注入的靶场 可以在git上下载 2 题目简介 前面的1 22题都是sql注入的基础题目 覆盖范围很广 不过都是针对mysql数据库的 1 4题 union注入 5 8题 布尔盲注 9 10题 延时盲注
  • sql server备份及导出表数据和结构

    一 备份表数据及结构 select into new table name from old tablename 二 导出表数据及结构 1 选中要导出的数据库 gt 任务 gt 生成脚本 或者在任务里面有生成脚本这个选项 好好找找能找到的
  • 高清变脸更快更逼真!比GAN更具潜力的可逆生成模型来了

    昨天上市即破发的小米 今天上午股价大涨近10 这下雷军要笑了 而且可以笑得更灿烂 更灿烂是什么样 来 我们用OpenAI刚刚发布的人工智能技术 给大家展示一下 当然这个最新的技术 不止这点本事 它的 想象力 很强大的说 比如 留胡子的硬汉版
  • 关于eclipse项目栏关闭项目不想再看到

    前言 如果你用是什么IntelliJ IDEA我这篇文章你就不用看了 我的建议还是用IDEA我也喜欢用 但是因为我们老师电脑卡的原因 这个编辑器比较吃配置所以用的eclipse 以前还用的myeclipse虽然我对编辑器没什么要求 但是我用
  • Jmeter常用线程组设置策略

    一 前言 在JMeter压力测试中 我们时常见到的几个场景有 单场景基准测试 单场景并发测试 单场景容量测试 混合场景容量测试 混合场景并发测试以及混合场景稳定性测试 在本篇文章中 我们会用到一些插件 在这边先给大家列出 Custom Th
  • Java多线程详解(线程同步)

    嗨喽 小伙伴们我来了 上一章 我们通过几个例子 点击跳转 介绍了线程安全问题 而说到线程安全就不得不提到线程同步 它是解决线程安全的一种重要方法 本章就来简单地介绍一下线程同步 从上一章的学习我们知道 当多个线程操作一个资源的时候 有可能由
  • 远程代码执行

    远程代码执行 远程代码执行 Remote Code Execute 远程命令执行 Remote Command Execute 1 为啥要远程执行代码 路由器 防火墙 入侵检测等设备的web管理界面 自动化运维的管理系统 提供给用户一个接口
  • antV实现离线中国2D地图并叠加拓扑(一)

    业务背景 中国地图铺满屏幕 屏幕的中间部分动态展示当前区域地图 当前区域有可能是省 市 县等 需要在当前区域展示拓扑站点 并实时弹出小面板展示当前站点详情 实现方式 antv G6实现拓扑图 antv L7绘制地图 本身L7是可以实现动态标
  • java生成6位随机数

    生成6位随机数 不会是5位或者7位 仅只有6位 System out println int Math random 9 1 100000 同理 生成5位随机数 System out println int Math random 9 1
  • 雷军也入局了...

    风口理论的发明者雷总最近也杀入大模型 AI领域了 早在10多天前雷军在微博就发过一段话 这段话其实已经暗示了雷军和他的小米已经在研发大模型产品了 相信要不了多久小米的大模型产品就会面世 这下国内几乎所有互联网巨头都杀入了大模型领域 同时还有
  • 2011年,移动互联网加速蔓延 – 来自2011移动开发者大会

    2011移动开发者大会 这是第二届移动开发者大会了 这一年来移动互联网各个领域蔓延开来 蔓延这个词是开复老师演讲的主题 从事塞班开发的请举手 举手者寥寥 记得在去年移动开发者大会上 举手者还有一些 经过一年的蔓延 塞班虽然仍然占有较大的份额
  • hadoop之YARN

    在YARN中 资源调度器 Scheduler 是ResourceManager中的重要组件 主要负责对整个集群 CPU 内存 的资源进行分配和调度 分配以资源Container的形式分发到各个应用程序中 如MapReduce作业 应用程序与