spark有些情况下单个任务运行特别慢,
比如原因有:数据倾斜,或者那个task所在机器配置较差等。
这种情况下可以开启预测执行(推测执行)。
推测执行优化机制采用了典型的以空间换时间的优化策略,
它同时启动多个相同task(备份任务)处理相同的数据块,哪个完成的早,则采用哪个task的结果,这样可防止拖后腿Task任务出现,进而提高作业计算速度。
但是,这样却会占用更多的资源,在集群资源紧缺的情况下,设计合理的推测执行机制可在多用少量资源情况下,减少大作业的计算时间。
配置如下:
# 预测执行
spark.speculation true
# 检查是否需要预测执行的间隔时间
spark.speculation.interval 5000ms
# 触发预测执行条件:成功task占比
spark.speculation.quantile 0.9
可以配在 conf/spark-defaults.conf中
也可以在提交spark任务的时候添加:
–conf spark.speculation=true \