基本概念

在spark程序中,推测任务是指对于一个stage里面拖后腿的task,会在其他节点的Executor上再次启动这个task,如果其中一个task的实例运行成功者将这个最先完成的task的计算结果,同时会干掉其它Executor上运行的实例。默认情况下推测执行时关闭的。

开启推测的优点:

  1. 解决慢task提升作业的整体执行进度
  2. 解决分布式集群环境下,负载不均衡或者资源分布不均等问题
  3. 解决因机器或者程序bug导致执行task的进程hang(暂时停止执行)住,使得job无法继续执行,需要重启任务等问题

开启推测的弊端:

  1. 占用更多的集群资源,严重的会造成所有资源被全部占用,不能及时释放
  2. task执行非事务操作,如果中间过程有跟外界存储交互的可能会影响结果数据

推测执行算法流程图:

开启spark的推测执行,需要设置运行参数spark.speculation=true,两种设置方式:

  • 在程序的sparkConf对象设置 :sparkConf.set("spark.speculation","true")
  • 提交作业时设定: --conf spark.speculation=true

开启spark的推测执行需结合其他三个参数同时使用:

  1. spark.speculation.interval 100:检测周期,单位毫秒;
  2. spark.speculation.quantile 0.75:完成task的百分比时启动推测;
  3. spark.speculation.multiplier 1.5:比其他的慢多少倍时启动推测。

执行流程如下图:

执行流程: 推测执行根据设置检查周期spark.speculation.interval,默认100ms定时检查执行的task是否需要对task启用推测。当task执行到100ms时,程序开始检测该spark程序job对应的stage已经执行完成的task,如果没有超过spark.speculation.quantile设定的百分比,则不启用推测。如果超过spark.speculation.quantile设定的值,计算成功task运行时间的中位数medianDuration,然后计算启用推测执行时间的界限threshold = (spark.speculation.multiplier)*medianDuration,对正在运行的task运行时间是否超过启用推测执行时间的界限threshold,如果运行时间未超过界限,则不启用推测,如果超过界限则会在另一个excecutor启动相同的task计算,如果其中一个task的实例运行成功者将这个最先完成的task的计算结果,同时会干掉其它Executor上运行的实例。如果200ms的时候,也就是spark.speculation.interval的2倍还有task未完成的话,就会进入下一次的推测执行判断周期中,判断逻辑跟周期一的一样,这是一个循环的过程。

注意问题 :

推测执行的检测周期不要设计得太短,不然可能会重复创建很多相同的task,如果有实时跟外部存储交互的场景慎用推测执行,因为一个task虽然没有执行完,但是一部分结果已经写入外部存储了,启动多个task就会造成数据重复,所以具体要不要开推测和参数怎么设定,一定要根据具体业务设定。

参考 :

Spark推测执行spark.speculation - 软件开发其他 - 红黑联盟

Spark推测执行spark.speculation_lvbiao_62的博客-CSDN博客_spark.speculation

spark推测执行 优点 缺点相关推荐

  1. Spark 推测执行 /spark.speculation=true /spark.speculation.quantile=0.75/spark.speculation.multiplier=1.5

    在Spark中任务会以DAG图的方式并行执行,每个节点都会并行的运行在不同的executor中,但是有的任务可能执行很快,有的任务执行很慢,比如网络抖动.性能不同.数据倾斜等等.有的Task很慢就会成 ...

  2. 智慧出行/spark Streaming-Dstream流优化:1.消费并行度,2.序列化,3.限流,压背,冷启4.cpu空转时间,5.不要在代码中判断这个表是否存在,6.推测执行7.开启动态资源分配

    1.设置合理的消费并行度 最优的方案是:kafka分区数:broker *3/6/9 kafka分区能不能增加,能不能减少? kafka分区数是可以增加的,但是不能减少 2.序列化 java的序列化, ...

  3. 87-Spark推测执行spark.speculation

    1. 背景 hadoop的推测执行 推测执行(Speculative Execution)是指在分布式集群环境下,因为程序BUG,负载不均衡或者资源分布不均等原因,造成同一个job的多个task运行速 ...

  4. 【大数据开发】SparkCore——Spark作业执行流程、RDD编程的两种方式、简单算子

    文章目录 一.Spark作业执行流程(重点) 二.RDD编程 2.1创建RDD的⼆种⽅式: 2.2Transformation算⼦ 2.3Action算子 三.简单算子(必须掌握) 3.1 map.m ...

  5. 数据库索引的作用和优点缺点

    原文:数据库索引的作用和优点缺点 为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能.  第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.  第二,可以大大加快 数据的检索速 ...

  6. 深入理解Spark Streaming执行模型

    摘要:Spark Streaming是Spark中最常用的组件之一,将会有越来越多的有流处理需求的用户踏上Spark的使用之路.本文描述了Spark Streaming的架构并解释如何去提供上述优势, ...

  7. 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。...

    横瓜执导众程序员开展大讨论关于C.JAVA及其它主流IT技术使用情况和优点缺点. 遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个 ...

  8. Python——特点(优点缺点)

    Python--特点(优点&缺点) Python 是一种面向对象的.解释型的.通用的.开源的脚本编程语言,它之所以非常流行,我认为主要有三点原因: Python 简单易用,学习成本低,看起来非 ...

  9. Forerunner:首个面向“多未来”的推测执行技术

    来源:微软研究院AI头条 编者按:10月26-29日,系统领域的全球顶会 SOSP 2021 在线上举办.在本届大会上,微软亚洲研究院研究员陈洋.郭众鑫.李润怀(实习生,浙江大学).陈硕.周礼栋.张宪 ...

  10. 推荐系统中常用算法 以及优点缺点对比

    推荐系统中常用算法 以及优点缺点对比 2014/09/20 [Martin导读]随着互联网特别是社会化网络的快速发展,我们正处于信息过载的时代.用户面对过量的信息很难找到自己真正感兴趣的内容,而内容提 ...

最新文章

  1. 老司机带你学爬虫——Python爬虫技术分享
  2. 100行php代码实现加密端口转发
  3. windows下python安装Numpy和Scipy模块
  4. 计算机硬盘冒烟了,电脑硬盘冒烟损坏了怎么办?
  5. DL之Panoptic Segmentation:Panoptic Segmentation(全景分割)的简介(论文介绍)、全景分割挑战简介、案例应用等配图集合之详细攻略
  6. 缩点+染色+DFS codeforce467D
  7. 「经营分析报告」怎么做?这套模板让领导一看就懂
  8. javascript-变量的命名-数据类型-注释
  9. cocos 时间函数需要什么引用_与时间赛跑:微盟的数据恢复为什么需要这么长时间...
  10. 步进电机驱动器细分功能的介绍以及设置
  11. 小米pro笔记本2017款BIOS降级0603
  12. delphi 安装控件时提示系统找不到指定的模块的解决
  13. 额~~~字符表情大全(写博客需要)
  14. 安全驾驶:上海科目二-全部科目-笔记整理-祝你考试一把过!
  15. 集成学习(随机森林)
  16. 年薪30W+的IC验证工程师究竟是做什么的?一文为你讲解清楚
  17. 国标GB/T28181视频流媒体服务器4G摄像头视频无插件直播方案对接过程中前端设备正常上线但视频无法播放问题解决
  18. 读书笔记:软件工程(11) - 传统方法学 - 软件需求分析
  19. java 判断简体 繁体字_java判定字符是英文,中文简体,还是繁体
  20. 苹果mac可引导系统镜像下载

热门文章

  1. HDU 2000 Java 奇怪的jio
  2. 企业管理信息系统成功实施的四个阶段
  3. 计算机ip地址是指什么作用是什么,ip地址的作用是什么
  4. 苍穹官网HTML源码带音乐
  5. 用60行代码实现一个高性能的圣诞抽抽乐H5小游戏(含源码)
  6. 《强化学习周刊》第3期:深度强化学习如何提升鲁棒性和性能
  7. 阿里巴巴常用的 12 个后端开发工具,建议你快快收藏!
  8. Linux篇 三、香橙派Zero2搭建Qt环境
  9. keras求两向量间的余弦值
  10. 阿里云服务器上的数据是如何确保安全的