公共大数据集群中如何配置 YARN 的公平调度器和容量调度器

news2024/11/24 5:58:14

公共大数据集群中如何配置 YARN 的公平调度器和容量调度器

1 YARN 资源管理框架与公平/容量调度器

作为一款资源调度框架,Yarn 支持可插拔的调度器,常见的调度器有公平调度器 fair scheduler 和容量调度器 capacity scheduler。常见的大数据发行版中,CDH 集成的是公平调度器,CDP/HDP集成的是容量调度器。

在实际使用过程中,为充分利用资源,一般多个大数据应用会公用一个大数据集群,此时集群管理员会将YARN资源划分到若干个队列中并为不同队列配置不同的资源额度,然后不同的业务根据其业务特征和重要性,提交作业到集群管理员规定的 YARN 队列中。

笔者遇到过不少因为 YARN 集群队列资源配置不当,造成业务作业获取不到资源而执行失败的情况,所以在此跟大家分享下集群管理员配置YARN调度器时的常见注意事项。

2 公平/容量调度器配置原则概述

为保证各个业务的 SLA 并兼顾集群资源的高效使用,不管使用公平调度器还是容量调度器,管理员在配置YARN调度器时,都需要遵循以下原则:

  • 管理员需要根据集群支撑的所有业务应用的重要性/资源需求量/运行时间等多种特征,将 YARN 集群整体资源按比例划分到不同的队列中,并要求业务应用提交到对应的YARN队列中;
  • 为确保不同应用运行在对应的 YARN 队列中,管理员可以统一配置放置规则基于作业提交用户的身份映射到对应队列中,也可以由业务应用显示指定队列(结合事后的审计 audit 确保队列使用正确);
  • 为不同队列指定资源配额时,公平调度器通过指定权重 weight 来指定资源配合(YARN会根据不同不同队列的 weight 自动计算出队列的资源配额);而容量调度器可以直接指定资源配额;
  • 队列的资源配额是静态的软限制,是长期来看各个队列能够获得的资源比;
  • 为了更高效地使用集群资源,管理员还可以指定队列的最小和最大资源,两者都是硬限制,其中最小资源数是为了确保本业务的 SLA,而最大资源数是为了不影响其它业务;
  • 为防止同一个队列下同时提交大量作业时相互争抢资源都得不到足够的资源,可以通过参数控制队列中作业的最大并发数;
  • 为防止同一个队列下所有 application master 占据大量资源而没有足够的资源分配给 executor 来执行任务,可以通过参数限制 am 的资源比;
  • 还可以配置 preemption 抢占策略,以允许某个队列在其实际获得的资源没有达到其资源配额时,抢占其它队列的超过其资源配额的资源(可能会kill该队列下的 container容器);

有些大数据集群的某些YARN队列具有明显的潮汐特征,即这些队列每天大部分时候都是空闲的,但在特定的时间段内,YARN 客户端会在短时间内提交大量作业申请大量容器资源,此时考虑到YARN队列的冷启动问题和YARN高并发下的性能问题,对于公平调度器,集群管理员可以调整以下参数,确保YARN队列能及时获得足够的资源:

  • 为提高YARN在高并发下响应客户端请求并分配资源容器的响应速度,可以调整以下参数,该调整需要重启 YARN 集群:
    • yarn.scheduler.fair.assignmultiple (默认 false,可以调整为 true);
    • yarn.scheduler.fair.dynamic.max.assign (默认 true,不用调整);
    • yarn.scheduler.fair.max.assign (默认 -1,不用调整);
    • yarn.scheduler.fair.update-interval-ms(默认 500ms,不用调整)
  • 为应对队列冷启动问题,可以为相应的YARN队列配置较高的权重,较高的权重可以加快队列运行作业时从0到获得足够资源的时间(该调整是动态调整,不需要重启集群);

3 如何排查调度器资源配置引起的业务问题

当业务作业因为调度器资源配置不当而运行失败时,一般需要查看以下信息以分析问题:

  • 检查作业报错信息,比如可以查看 rm web ui 中该作业的 Diagnostics 信息,Hive 作业的话需要查看 hs2 日志,还需要查看作业的日志(开启了日志聚合的话,可以使用命令 yarn logs -applicationId xxx);
  • 检查 YARN 队列的静态配置信息,比如通过 CDH 的动态资源池页面或 CDP 的 Yarn Queue manager UI 页面;
  • 检查作业执行期间 YARN 队列的动态状态,比如检查 yarn web ui 的调度器页面;
  • 公平调度器下,某队列在 YARN WEBUI 的调度器页面截图如下:
    • 页面中显示的 Steady Fair Share 是静态指标,其实质就是调度器根据用户配置的权重 weight计算出来的资源配额;
    • 页面中显示的 Instantaneous Fair Share 是动态指标,是由调度器根据用户配置的权重和当前集群所有队列作业负载动态计算得出的动态指标;
    • 页面中显示的AM Max Resources,其计算逻辑如下: AM Max Resources = Instantaneous Fair Share * maxAMShare;
    • maxAMShare,默认值是50%;
  • 一般而言,YARN 队列资源不足的问题比较容易发现,但是 AM 资源比例超限,最大任务数超限等问题,则需要细心观察;
  • 某案例中,因为 AM 资源超限导致 hive on spark 任务无法申请到资源启动 spark driver 而运行失败,此时 hs2 中相关日志如下:
//作业失败相关日志:
failed to create spark client for spark session xxx xx:java.util.concurrent.TimeoutException: client xx timed out waiting for connection from the remote spark driver;
//资源超限相关日志:
org.apache.hive.spark.client.sparkClientImpl: [spark-submit-stderr-redir-HiveServer2-Backgroud-pool: Thread-xxxxx]: diagnostics: xxx application is added to the scheduler and is not yet activated. (Resource request: <memory:3584,vcores:1> exceeds maximum am resource allowed).
  • 某案例中,因为 AM 资源超限导致新作业无法申请到资源启动 application master 而运行失败,此时容量调度器下,yarn web ui中该队列相关截图如下:

4 公平调度器相关重要参数

在容量调度器下,具体的资源管控参数,重要的有以下这些:

- Min Resources:队列最小资源数;
- Max Resources:队列最大资源数;
- maxRunningApps: 队列内最大可运行作业书;
- maxAMShare: am 资源比,默认50%;
- weigh: 队列权重,调度器会基于所有队列的权重计算每个队列的 fair share 资源配额;
- schedulingPolicy: 可选 fifo/fair/drf;
##更多细节,请参考官方文档
- https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html
  • CDH 中公平调度器相关参数的配置页面如下:

5 容量调度器相关重要参数

在容量调度器下,具体的资源管控参数,重要的有以下这些:

##队列资源相关参数
- yarn.scheduler.capacity.<queue-path>.capacity/yarn.scheduler.capacity.<queue-path>.maximum-capacity
- yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb/yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores
- yarn.scheduler.capacity.<queue-path>.user-limit-factor
## am 资源限制相关参数
- yarn.scheduler.capacity.maximum-am-resource-percent/yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent
##作业并行度相关参数
- yarn.scheduler.capacity.maximum-applications/yarn.scheduler.capacity.<queue-path>.maximum-applications
- yarn.scheduler.capacity.max-parallel-apps/yarn.scheduler.capacity.<queue-path>.max-parallel-apps
- yarn.scheduler.capacity.user.max-parallel-apps/yarn.scheduler.capacity.user.<username>.max-parallel-apps
##更多细节,请参考官方文档
- https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html

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

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

相关文章

一张照片,如何生成一个二维码?

冬天落在恭王府的第一场大雪、春天聚在河边觅食的麻雀、盛夏午后从冰箱里拿出来的大西瓜、深秋爬满南墙的红叶……每一份惊喜和快乐&#xff0c;都值得分享给更多的朋友。 今天我们要介绍的是&#xff0c;如何将一张照片&#xff0c;做成一个二维码&#xff0c;扫码后就可以看…

利用两个小demo理解汇编代码排查内存溢出问题

利用两个小demo理解汇编代码排查内存溢出问题 https://www.cnblogs.com/liuchuanloong/articles/16925695.html 【背景】 近日处理现场问题时遇到了踩内存导致的崩溃问题&#xff0c;然而个人对反汇编程序执行过程不熟悉&#xff0c;通过查阅资料&#xff0c;对比分析两个小d…

不适用于云的应用程序有哪些?

所有应用程序都适合在云上运行吗?这是在云计算中寻求改进IT解决方案的企业经常问的一个问题。这个问题的答案是“视情况而定”。虽然企业云的应用正在飞速发展&#xff0c;大多数企业都在考虑将整个应用程序迁移到云上&#xff0c;以实现可伸缩、灵活、可访问、敏捷和精益的工…

PC端配置定位服务步骤(依赖于腾讯位置服务)

目录 第一步 &#xff1a; 安装 jsonp 第二步 &#xff1a; 在mian.js中配置并使用 第三步 &#xff1a; 在 manifest.json中进行相关配置 第四步 &#xff1a; 获取经纬度值&#xff0c;从而得到地址 第一步 &#xff1a; 安装 jsonp 执行此代码 &#xff1a; np…

Origin2022安装教程

Origin2022他来了&#xff01; 本人虽然是Python和R的资深绘图用户&#xff0c;偶尔也用用Origin&#xff0c;Origin的优势区间是手动、全可控&#xff0c;要素复杂事图片效果好&#xff1a; 安装方法和安装包下载破解见文末&#xff1a; Origin 2022新要素 1.对地理要素和…

基于 51 单片机室内灯光控制系统

1. 功能介绍 这是基于 STC89C52 单片机设计的灯光控制系统&#xff0c;实现对室内灯光的控制&#xff0c;采集光敏传感器&#xff0c;红外线热释电传感器&#xff0c;声音传感器&#xff0c;光照照度传感器等数据进行处理&#xff0c;完成室内灯光的智能控制。 支持的功能与设…

VBox组件内部局域网

我使用VirtualBox并不是很专业&#xff0c;只是拿它来组件服务器。后来这个虚拟机对我越来越重要&#xff0c;我的各种测试服务器和学习服务器越来越多&#xff0c;于是我就给他们规划了IP地址&#xff0c;像这样: 我用的网络一直都是桥接&#xff0c;每个虚拟机都可以上网&…

高性能HTTP和反向代理Web服务器 - Nginx

Nginx一、安装1.1.Windows安装1.2.Linux安装1.3.常用命令二、动静分离三、反向代理3.1.正向代理3.2.反向代理四、负载均衡4.1.轮询4.2.加权轮询4.3.Ip hash五、限流六、缓存七、黑白名单Nginx是一个高性能的HTTP服务器和反向代理的web服务器&#xff0c;同时也提供IMAP&#xf…

一文带你读懂公司卫生间一直有人窜稀的原理

不知道你有没有这样的经历&#xff0c;一直忙忙碌碌&#xff0c;需求不断&#xff0c;当你终于解决完手头的事情&#xff0c;突然特别着急想要去卫生间的时候&#xff0c;仅有的几个门总是关着的&#xff0c;于是怀疑&#xff0c;可能其他人更需要这次机会&#xff0c;他们也一…

华为云安装Docker,在其中安装Tomcat运行Html项目一步到位

一日不学习浑身难受&#xff0c;对于追光者的我来说&#xff0c;就是这种情况&#xff01;&#xff01;&#xff01;今天心血来潮&#xff0c;想把云服务器、Docker、Tomcat、Html项目集成一块进行练习&#xff0c;为了后面的部署项目做准备。 环境介绍&#xff1a;华为云cent…

KafKa存储机制

目录 存储机制 kafka 存储选型 Kafka 存储方案剖析 kafka 存储架构设计 kafka 日志系统架构设计 日志目录布局 磁盘数据存储 可靠性 Producer的可靠性保证 kafka 配置为 CP系统 kafka 配置为 AP系统 Broker 的可靠性保证 Consumer 的可靠性策略 AutoCommit&#xff…

【二叉树从无到有】

目录&#xff1a;前言一、树1.什么是树结构&#xff1f;2.为什么使用树结构&#xff1f;3.树的概念4.树的表示5.树在现实生活中的应用二、二叉树&#xff08;一&#xff09;二叉树概念既结构1.概念2.现实中的二叉树3.特殊的二叉树4.二叉树的性质5.二叉树的存储结构&#xff08;…

线程的深度剖析

线程和进程的区别和联系&#xff1a; 1.进程可以处理多并发编程的问题&#xff0c;但是进程太重&#xff0c;主要指它的资源分配和资源回收上&#xff0c;进程消耗资源多&#xff0c;速度慢&#xff0c;其创建、销毁、调度一个进程开销比较大。 2.线程的出现有效地解决了这一…

面向对象的个人理解(使用JAVA代码描述)

前言 功能分类 类&#xff08;class&#xff09;的第一个功能是隔离&#xff0c;起到边界的作用&#xff0c;使得不同功能的代码互不干扰。 干扰的起源 在非面向对象的语言中&#xff0c;我们主要定义结构和函数来实现功能。下边用C语言来举个例子。 某程序员写了宠物模拟…

Ajax学习:nodejs安装+express框架介绍

ajsx应用中&#xff0c;需要安装nodejs环境 基于Chrome V8引擎&#xff08;和浏览器上的谷歌的解析引擎一样&#xff09;JavaScript运行环境 (31条消息) Node.js_安装_哇嘎123的博客-CSDN博客 查看安装是否完成 express框架介绍--为了创建一个web服务器 (31条消息) Express…

Spark系列之Spark体系架构

title: Spark系列 第四章 Spark体系架构 4.1 Spark核心功能 Alluxio 原来叫 tachyon 分布式内存文件系统Spark Core提供Spark最基础的最核心的功能&#xff0c;主要包括&#xff1a; 1、SparkContext 通常而言&#xff0c;DriverApplication的执行与输出都是通过SparkC…

STM32G491RCT6,STM32H743BIT6规格书 32bit IC MCU

STM32G4系列将强大的ArmCortex-M4加上FPU和DSP能力与丰富和先进的模拟外设相结合。它引入了两种新的数学加速器(Cordic和Filtering)&#xff0c; CAN-FD (Flexible Datarate)&#xff0c;USB Type-C接口的功率传输&#xff0c;包括物理层(PHY)和先进的安全功能。&#xff08;图…

Day38——Dp专题

DP专题 动态规划五部曲&#xff1a; 确定dp数组以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 1.斐波那契数 题目链接&#xff1a;509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;做dp类题目&#xff0c;根据…

Meta 内部都在用的 FX 工具大起底:利用 Graph Transformation 优化 PyTorch 模型

PyTorch 中的 graph mode 在性能方面表示更为出色&#xff0c;本文介绍 Torch.FX 这个强大工具&#xff0c;可以捕捉和优化 PyTorch 程序 graph。 一、简介 PyTorch 支持两种执行模式&#xff1a;eager mode 和 graph mode。 eager mode 中&#xff0c;模型中的运算符在读取时…

JUC并发编程

目录JUC概述什么是JUC进程与线程的概念线程的状态线程的方法并发与并行管程(Monitor)用户线程和守护线程Lock接口Synchronized 关键字Synchronized 作用范围Synchronized 实现卖票例子Lock接口什么是LockLock与synchronized的区别可重入锁&#xff08;ReentrantLock&#xff09…