Spark之Dynamic Resource Allocation

文章目录

  • Dynamic Resource Allocation
    • 请求策略
    • 移除策略
    • 移除存在的问题
    • 相关参数

Dynamic Resource Allocation

Spark提供一种基于负载使用情况来动态调整application资源的机制。

  • DRA机制在所有的调度模式下均支持,但默认禁用
  • DRA机制就是用于动态调整executor的数量,做到资源的相对最大利用
  • DRA目前采用启发式方法来判断executor是否删除或者新分配

请求策略

动态分配开启后,spark application在有pending tasks等待调度时会请求新的executors。

  • 轮询请求executor,当pending tasks满足spark.dynamicAllocation.schedulerBacklogTimeout(单位秒)的时间后,将触发请求新的executors
  • 此后每隔spark.dynamicAllocation.schedulerBacklogTimeout(单位秒)的时间判断,如果仍有pending tasks存在,spark请求的executor的数量将会以指数级增长,例如1,2,4,8

移除策略

移除主要是判断executor的空闲时间。

  • 如果executor的空闲时间超过spark.dynamicAllocation.executorIdleTimeout(单位秒)的时间,将会被移除。
  • remove和request请求在大多数情况下是互斥的,即如果有pending tasks存在那么executor不应该是空闲的。
  • executor可以将数据缓存在内存或磁盘,当executor被移除后,这些缓存时间是无法被访问的。可以设置spark.dynamicAllocation.cachedExecutorIdleTimeout缓存数据的executor的不会被移除。

移除存在的问题

shuffle过程中,executor会将map阶段的输出写入到本地,并且在其他executor需要获取文件时充当文件服务器的角色。 当某些tasks运行的时间格外的长,动态分配机制可能会在shuffle完成之前移除该executor,在这种情况下会导致进行不必要的重计算。

  • 使用external shuffle service。该服务会在集群的每个节点启动一个长时间运行的进程,此时将会从ess获取shuffle文件。所以此时即使executor被移除,shuffle的状态仍然可以获取到。
  • 开启shuffleTracking。此时对executor启用shuffle文件跟踪,从而不会移除存储有shuffle文件的executor
  • 开启优雅退役。此时spark将优雅的关闭executor,会尝试将所有的RDD块(spark.storage.decommission.rddBlocks.enabled控制)和shuffle块(spark.storage.decommission.shuffleBlocks.enabled控制)从停用的executor迁移到其他executor。在这个情况下,即使启用动态分配,在移除executor时也会优雅退役。

相关参数

Property NameDefaultMeaningSince Version
spark.dynamicAllocation.enabledfalse是否启动动态资源分配。需要以下条件之一:1) 启动external shuffle service。参数为spark.shuffle.service.enabled。2) 启用shuffle tracking。spark.dynamicAllocation.shuffleTracking.enabled。 3) 启用优雅退役。spark.decommission.enabled和spark.storage.decommission.shuffleBlocks.enabled1.2.0
spark.dynamicAllocation.executorIdleTimeout60s动态资源分配启用时,空闲超过该时间的executor将会被移除1.2.0
spark.dynamicAllocation.cachedExecutorIdleTimeoutinfinity动态资源分配启用时,空闲超过该时间的缓存数据块的executor将会被移除1.4.0
spark.dynamicAllocation.schedulerBacklogTimeout1s积压的task持续超过该时间,将会请求新的executor1.2.0
spark.dynamicAllocation.sustainedSchedulerBacklogTimeoutschedulerBacklogTimeout效果与spark.dynamicAllocation.schedulerBacklogTimeout,但仅用于后续的executor的请求1.2.0
spark.dynamicAllocation.initialExecutorsspark.dynamicAllocation.minExecutors动态资源分配启用时,executor的初始化值。如果设置了–num-executors或spark.executor.instances,并且大于该值,将会用于初始化的executor数量1.3.0
spark.dynamicAllocation.maxExecutorsinfinityexecutor的数量上限1.2.0
spark.dynamicAllocation.minExecutors0executor数量下限1.2.0
spark.dynamicAllocation.executorAllocationRatio默认情况下,动态分配会根据要处理的任务数量请求足够的执行器来最大限度地提高并行性。但在某些小任务情况下,可能会导致大量资源浪费。此设置允许设置一个比率,该比率将用于减少相对于最大并行度的executor数量。默认为1.0以提供最大并行度。0.5将executor的目标数量除以2。dynamicAllocation计算的executor目标数量仍然可以被spark.dynamicAllocation.minExecutitors和spark.dynamicAllocation.maxExecutitors设置覆盖2.4.0
spark.dynamicAllocation.shuffleTracking.enabledtrue对executor启用shuffle文件跟踪,从而无须使用external shuffle service。该选项尝试使active的作业中,存储shuffle数据的executor存活3.0.0
spark.dynamicAllocation.shuffleTracking.timeoutinfinity启用shuffle tracking时,控制存储shuffle数据的executor的超时时间。默认值为无穷,即spark将依赖垃圾收集来释放shuffle的executor3.0.0

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

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

相关文章

SIC产业链简述

同第一代硅半导体产业链类似,SiC产业链也分为以下几个环节: 设备和材料环节,包括晶体生长炉、MOCVD、切割设备、碳粉/硅粉/SiC粉体、石墨件等耗材; SiC衬底合外延环节,包括导SiC晶体生长、衬底晶片、外延片等制造&am…

KVM虚拟机部署K8S重启后/etc/hosts内容丢失

前言 使用KVM开了虚拟机部署K8S,部署完成后重启,节点的pod等信息无法获取到,查看报错初步推测为域名解析失效,查看/etc/hosts后发现安装k8s时添加的内容全部消失 网上搜索一番之后发现了 如果直接修改 /etc/hosts 文件&#xff0…

MyBatis学习一:快速入门

前言 公司要求没办法,前端也要了解一下后端知识,这里记录一下自己的学习 学习教程:黑马mybatis教程全套视频教程,2天Mybatis框架从入门到精通 文档: https://mybatis.net.cn/index.html MyBatis 快速入门&#xf…

Python内置库os和sys的常用方法汇总

更多Python学习内容:ipengtao.com Python是一门强大的编程语言,具有丰富的标准库,其中包括os和sys两个常用模块。os模块用于与操作系统交互,提供了许多文件和目录操作的方法,而sys模块用于与Python解释器进行交互&…

buildadmin实现多级关联下拉效果

文章目录 最终效果开始重新渲染组件编辑渲染完结 最终效果 开始 popupForm.vue代码 <FormItem :label"t(interior.interiorApply.interior_index_id)" type"remoteSelect"v-model"baTable.form.items!.interior_index_id" prop"interi…

算法练习Day25 (Leetcode/Python-贪心算法)

贪心算法基本概念&#xff1a; 贪心的本质是通过选取局部最优达到全局最优。 并没有固定的套路&#xff0c;检验的算法正确性的办法可以是举反例。 455. Assign Cookies Assume you are an awesome parent and want to give your children some cookies. But, you should gi…

GreenPlum-数据世界的绿洲

GreenPlum的介绍 Greenplum是一个基于开源PostgreSQL数据库系统的高性能、可扩展的大数据处理平台。它是由Pivotal Software&#xff08;现在是VMware的一部分&#xff09;开发并维护的。Greenplum的设计目标是处理大规模的数据集&#xff0c;提供高并发、高吞吐量的查询和分析…

AWS CDK安装到AWS EC2 Linux 2

文章目录 小结问题及解决安装NPM安装aws-cdk-lib找不到Python3 测试参考 小结 AWS CDK安装到AWS EC2 Linux 2&#xff0c;并记录过程。 问题及解决 安装NPM [ec2-userip-100-92-28-119 aws]$ sudo yum install npm Loaded plugins: priorities, update-motd, upgrade-helpe…

云计算:OpenStack 分布式架构部署(单控制节点与多计算节点)

目录 一、实验 1.环境 2. 计算服务安装(计算节点2) 3. 网络服务安装(计算节点2) 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部署compute01计算节点1192.168.204.211 已部署compute02计算节点2192.168.204.212 &#xff08;…

产品经理学习-从0-1搭建策略产品

从0-1搭建策略产品 目录&#xff1a; 回顾策略产品 如何从0-1搭建策略产品 回顾策略产品 之前也了解过从产品实施的角度来看&#xff0c;策略就是针对问题的解决方案&#xff0c;在互联网时代更集中体现在2个维度&#xff1a;业务场景和数据应用 如何从0-1搭建策略产品 我们…

positon emb(位置编码存在PAD)部分

Unk替换细节修改&#xff1a;若shuffle ratio1.0 &#xff08;1&#xff09;编码后的input_id: tensor([[ 101, 1996, 2006, 1996, 7195, 1997, 5409, 1011, 1011, 102], [ 101, 7842, 14194, 1997, 2100, 102, 0, 0, 0, 0], &#xff08;2&#xff09;对应的unk_mask: ten…

牛客周赛 Round 26 解题报告 | 珂学家 | 0-1 BFS + 状态机DP

前言 整体评价 T3是一道0-1 BFS题, 这样时间复杂度可以控制在O(n*m), 也可以用优先队列。 T4这类题型&#xff0c;在牛客Round周赛系列出现好多次了&#xff0c;要么状态机DP&#xff0c;要么容斥&#xff0c;如果n很大&#xff0c;就用矩阵幂优化。 欢迎关注 珂朵莉 牛客周…

MATLAB中xcorr函数用法

目录 语法 说明 示例 两个向量的互相关 向量的自相关 归一化的互相关 xcorr函数的功能是返回互相关关系。 语法 r xcorr(x,y) r xcorr(x) r xcorr(___,maxlag) r xcorr(___,scaleopt) [r,lags] xcorr(___) 说明 r xcorr(x,y) 返回两个离散时间序列的互相关。互相…

V8引擎-隐藏类

1、动态语言和静态语言 静态语言的效率更高 javaScript是一种动态语言&#xff0c;对象的属性在运行时可以被修改。因此&#xff0c;当V8使用一个对象时&#xff0c;比如使用start.x来访问对象start的属性x时&#xff0c;V8并不知道对象中是否存在x属性&#xff0c;也不知道x属…

【C Primer Plus第六版 学习笔记】 第十六章 C预处理器和C库

有基础&#xff0c;进阶用&#xff0c;个人查漏补缺 第十五章的内容之前学过&#xff0c;跳过 预处理之前&#xff0c;编译器必须对该程序进行一些翻译处理 首先把源代码中出现的字符映射到原字符集 其次编译器定位每个反斜杠后面跟着换行符的实例&#xff0c;并删除它们&…

在 Linux 系统中,常用的音频命令alsamixer、amixer、aplay、arecord

在 Linux 系统中&#xff0c;常用的音频命令主要包括以下几个&#xff1a; 1. alsamixer alsamixer 是一个交互式的音频混音控制台程序&#xff0c;它提供了对音量、通道、增益等设置的直观界面。 2. amixer amixer 命令用于管理音频设置&#xff0c;可以显示和调整音量、切换…

各种编程语言的特点及应用领域

1、C语言 特点&#xff1a;C语言是一种高效、快速、可移植、结构化的编程语言&#xff0c;具有广泛的应用领域。C语言不提供诸如面向对象编程&#xff08;OOP&#xff09;等高级语言所支持的抽象层次&#xff0c;但可以方便地访问底层硬件&#xff0c;因此常被用于系统编程和嵌…

一种安防场景下融合注意力机制和时空图卷积神经网络的人体动作识别方法与流程

本发明涉及模式识别与计算机视觉领域&#xff0c;尤其涉及一种安防场景下融合注意力机制和时空图卷积神经网络的人体动作识别方法。 背景技术&#xff1a; 视觉一直是人类获取外界信息的最重要、最直观的途径&#xff0c;据有关统计&#xff0c;人类获取信息的80&#xff05;都…

nginx 多端口部署多站点

目录 1.进行nginx.conf 2.复制粘贴 3.修改端口及站点根目录 4. 网站上传 1.进行nginx.conf 在 nginx 主要配置文件 nginx.conf 中&#xff0c;server 是负责一个网站配置的&#xff0c;我们想要多个端口访问的话&#xff0c;可以复制多个 server 先进入到 nginx.conf 中 …

「微服务」Saga 模式 如何使用微服务实现业务事务-第二部分

在上一篇文章中&#xff0c;我们看到了实现分布式事务的一些挑战&#xff0c;以及如何使用Event / Choreography方法实现Saga的模式。在本文中&#xff0c;我们将讨论如何通过使用另一种类型的Saga实现&#xff08;称为Command或Orchestration&#xff09;来解决一些问题&#…