spark卡在某个节点很长时间

本文深入解析了Spark中的推测执行机制,阐述了其如何通过在不同executor上并行执行相同task来提升作业效率,尤其是在集群中存在性能差异的机器时。同时,介绍了如何启用推测执行及相关配置参数的详细设置。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/whgyxy/article/details/88779965

https://blog.csdn.net/qq_34382453/article/details/85781377

1、什么是推测执行?
在spark作业运行中,一个stage里面的不同task的执行时间可能不一样,有的task很快就执行完成了,而有的可能执行很长一段时间也没有完成。造成这种情况的原因可能是集群内机器的配置性能不同、网络波动、或者是由于数据倾斜引起的。而推测执行就是当出现同一个stage里面有task长时间完成不了任务,spark就会在不同的executor上再启动一个task来跑这个任务,然后看哪个task先完成,就取该task的结果,并kill掉另一个task。其实对于集群内有不同性能的机器开启这个功能是比较有用的,但是如果仅仅是数据倾斜问题可能用处就不是很大,因为即使换了机器执行,它的本质问题–数据量大并未解决,所以也有可能会执行很长的一段时间。

2、如何开启推测执行
将参数spark.speculation设置为TRUE即可。

spark.speculation=true

    1

相关参数

spark.speculation.interval 100:检测周期,单位毫秒
spark.speculation.quantile 0.75:完成task的百分比
spark.speculation.multiplier 1.5:时间比例

    1
    2
    3

spark.speculation.interval 参数的意思是设置检测周期,默认100毫秒检测一次是否执行推测执行。
spark.speculation.quantile 参数的意思是同一个stage里面有task完成的百分比,默认为75%。
spark.speculation.multiplier 这个参数是一个时间比例。意思是当task完成了75%的时候,取完成了的task的执行时间的中位数,再乘以这个时间比例,默认为1.5。当未完成的task的执行时间超过了这个乘积值,就开启推测执行。
---------------------
作者:夏至1208
来源:CSDN
原文:https://blog.csdn.net/qq_34382453/article/details/85781377
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值