Spark 推测执行(speculative)

article/2025/10/26 1:00:06

一  speculative简介

在spark作业运行中,一个spark作业会构成一个DAG调度图,一个DAG又切分成多个stage,一个stage由多个Task组成,一个stage里面的不同task的执行时间可能不一样,有的task很快就执行完成了,而有的可能执行很长一段时间也没有完成。造成这种情况的原因可能是集群内机器的配置性能不同、网络波动、或者是由于数据倾斜引起的。而推测执行(speculative)就是当出现同一个stage里面有task长时间完成不了任务,spark就会在不同的executor上再启动一个task来跑这个任务,然后看哪个task先完成,就取该task的结果,并kill掉另一个task。其实对于集群内有不同性能的机器开启这个功能是比较有用的。

二 如何在spark中启动speculative

1,在spark-env.sh里设置

       spark.speculation=true # 这样会作用到所有spark任务

2,在代码里通过sparkConf设置

   conf.set("spark.speculation", true)

3,在用spark sql时

spark.sql("set  spark.speculation = true")

4,map和reduce可以分开设置

sqlContext.sql("set mapreduce.map.speculative = true")

sqlContext.sql("set mapreduce.reduce.speculative = true")

三 speculative 运行机制

1, 监控Slow Task(Straggler Task)

spark程序运行时,会在TaskSchedulerImpl类中启动一个独立的线程池(task-scheduler-speculation)每100ms检查一次所有Task中是否有Slow Task.

2, Straggler Task衡量指标

如下图所示,在Spark调度作业中,DAGScheduler会将每个Stage中的Task封装到TaskSet,并将TaskSet交给TaskScheduler,TaskScheduler 会按顺序将Task发给Executor,并由Executor端执行这些Task。在这些Task计算过程中,Driver端如何衡量哪些Task是Straggler Task(TaskSet中所有的Task都是并行计算,在不同的Executor中计算),这个衡量过程Spark称为Speculative Task,符合Speculative Task的Task,Spark 称为Straggler Task.

相关参数

spark.speculation.interval 100:检测周期,单位毫秒

spark.speculation.quantile 0.75:完成task的百分比

spark.speculation.multiplier 1.5:时间比例


spark.speculation.interval 参数的意思是设置检测周期,默认100毫秒检测一次是否执行推测执行。

spark.speculation.quantile 参数的意思是同一个stage里面有task完成的百分比,默认为75%

spark.speculation.multiplier 这个参数是一个时间比例。意思是当task完成了75%的时候,取完成了的task的执行时间的中位数,再乘以这个时间比例,默认为1.5。当未完成的task的执行时间超过了这个乘积值,就开启推测执行。

现存问题:

    在分布式环境中导致某个Task执行缓慢的情况有很多,负载不均、程序bug、资源不均、数据倾斜等,而且这些情况在分布式任务计算环境中是常态。Speculative Task这种以空间换时间的思路对计算资源是种压榨,同时如果Speculative Task本身也变成了Slow Task会导致情况进一步恶化。

 


http://chatgpt.dhexx.cn/article/0gWaRCD6.shtml

相关文章

INT8 中的稀疏性:加速的训练工作流程和NVIDIA TensorRT 最佳实践

INT8 中的稀疏性:加速的训练工作流程和NVIDIA TensorRT 最佳实践 文章目录 INT8 中的稀疏性:加速的训练工作流程和NVIDIA TensorRT 最佳实践结构稀疏量化在 TensorRT 中部署稀疏量化模型的工作流程案例研究:ResNet-34要求第 1 步:…

非引导方法深度补全系列——1—— 《Sparsity invariant cnns》文章细读

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 创新点 论文概述 方法详解 网络结构: 杂七杂八 总结 参考 创新点 1.提出了一种稀疏卷积层,在卷积过程中使用二进制有效性掩码来指示缺失…

模型剪枝三:Learning Structured Sparsity in Deep Neural Networks

论文:https://arxiv.org/abs/1608.03665 代码:https://github.com/wenwei202/caffe/tree/scnn 1 核心思想 前面两篇文章https://blog.csdn.net/cdknight_happy/article/details/110953977和https://blog.csdn.net/cdknight_happy/article/details/1110…

Exploring Sparsity in Image Super-Resolution for Efficient Inference

目录 原文翻译 Abstract 1. Introduction 2. Related Work 4. Our SMSR Network 4.1. Sparse Mask Generation 4.2. Sparse Mask Convolution 5. Experiments 5.1. Implementation Details 5.2. Model Analysis 5.3. Comparison with State-of-the-art Methods Conclusion …

稀疏大模型简述:从MoE、Sparse Attention到GLaM

文 | 唐工源 | 知乎 Sparsity, ..., is another important algorithmic advance that can greatly improve efficiency. 稀疏性,是(神经架构搜索)之外另一个重要的算法进步,可以大大提高效率。 The use of sparsity in models is…

Sparse Learning

Sparse Learning 本文的内容主要来自余凯老师在CVPR2012上给的Tutorial。前面在总结ScSPM和LLC的时候,引用了很多Tutorial上的图片。其实这个Tutorial感觉写的挺好的,所以这次把它大致用自己的语言描述一下。不过稀疏编码是前两年比较火的东西&#xff0…

理解sparse coding

稀疏编码系列: (一)----Spatial Pyramid 小结(二)----图像的稀疏表示——ScSPM和LLC的总结(三)----理解sparse coding(四)----稀疏模型与结构性稀疏模型 -------------…

干货!SparCL,将Sparsity用在连续学习任务,相同表现下训练效率提升23倍!

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者简介 王梓枫 美国东北大学博士生,主要研究方向持续学习(Continual Learning)。 个人主页:https://kingspencer.github.io/ 报告题目 SparCL: 边缘设备上的稀疏…

MORE CONVNETS IN THE 2020S: SCALING UP KER- NELS BEYOND 51 × 51 USING SPARSITY

论文链接: https://arxiv.org/pdf/2207.03620.pdf code: https://github.com/VITA-Group/SLaKlink MORE CONVNETS IN THE 2020S: SCALING UP KER- NELS BEYOND 51 51 USING SPARSITY 一、引言(二)、大内核注意力(二)、卷积中的大…

Self-supervised Learning for Label Sparsity in Computational Drug Repositioning

论文地址:Self-supervised Learning for Label Sparsity in Computational Drug Repositioning 1. Introduction 药物重定位旨在根据已知的药物-疾病关联性揭示上市药物的新用途。其背后的逻辑是:目前市场上的小分子药物具有多靶点特性,这意…

xgboost:分割Sparsity-aware Split Finding

Sparsity-aware Split Finding1 在许多现实问题中,输入 x x x是稀疏的是很常见的。造成稀疏性的可能原因有很多: 1)数据中存在缺失值; 2)统计中频繁出现零项; 3)特征工程的处理结果,如独热编码。 重要的是使算法意识到数据中…

Sparsity constraint稀疏约束详解

Sparsity constraint稀疏约束详解 引子: 线性模型是我们经常使用的一种模型,比如: 文本分类中,bag-of-words 有p 20 K 个特征, 共有 N 5K 个文本样例; 在图像去模糊化,图像分类中,…

[机器学习速成课程] 稀疏性正则化 (Regularization for Sparsity)-学习笔记

稀疏性和 L1 正则化 学习目标: 计算模型大小通过应用 L1 正则化来增加稀疏性,以减小模型大小 降低复杂性的一种方法是使用正则化函数,它会使权重正好为零。对于线性模型(例如线性回归),权重为零就相当于完…

机器学习14:稀疏性-Sparsity

现实世界中,问题的特征的数量往往是很大的,而其中起决定性作用的往往是很小的一部分,稀疏规则化算子的引入会学习去掉这些没有信息的特征,也就是把这些特征对应的权重置为 0。 1.稀疏性正则化:L₁ 正则化 稀疏向量通常…

稀疏(sparsity)矩阵的行压缩存储

压缩矩阵行或列来存储矩阵的格式是很普遍的,它们不会存储不必要的元素(即空值)。但是它们也不是非常有效的,当在一个矩阵-向量积或预解决的每个简单标量中需要间接寻址。行压缩存储方式会把一个稀疏矩阵行的非零数值放在连续的存储…

redis删除锁

redis删除锁 参考:百度安全验证 前言 在分布式系统中,由于redis分布式锁相对于更简单和高效,成为了分布式锁的首先,被我们用到了很多实际业务场景当中。 但不是说用了redis分布式锁,就可以高枕无忧了,如…

Redis进阶: 锁的使用

Redis进阶: 锁的使用 1. 概念1. 原子性2. 事务 2. 使用Redis构建全局并发锁3. Redlock(redis分布式锁)总结 相关Blog 1. 概念 1. 原子性 原子性 原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务&…

redis锁的几种实现

1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时&#xff0…

java redis锁_Java中Redis锁的实现

由于具体业务场景的需求,需要保证数据在分布式环境下的正确更新,所以研究了一下Java中分布式锁的实现。 Java分布式锁的实现方式主要有以下三种: 数据库实现的乐观锁 Redis实现的分布式锁 Zookeeper实现的分布式锁 其中,较常用的是前两种方式,但是数据库实现方式需要较多的…

Redis的分布式锁详解

一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&…