Spark 推测执行原理和应用

  • Post author:
  • Post category:其他


概念

Spark 推测执行是一种优化技术。

在Spark中,可以通过推测执行,即Speculative Execution,来识别并在其他节点的Executor上重启某些运行缓慢的Task,并行处理同样的数据,谁先完成就用谁的结果,并将另一个未完成的Task Kill掉,从而加快Task处理速度。适用于某些Spark任务中部分Task被hang住或运行缓慢,从而拖慢了整个任务运行速度的场景。

注意:

1. 不是所有运行缓慢的Spark任务,都可以用推测执行来解决。

2. 使用推测执行时应谨慎。需要合适的场景、合适的参数,参数不合理可能会导致大量推测执行Task占用资源。

3. 如Spark Streaming写Kafka缓慢,若启用推测执行,可能会导致数据重复。

4. 被推测的Task不会再次被推测。



Spark推测执行参数

  • spark.speculation :默认false。是否开启推测执行。
  • spark.speculation.interval :默认100ms。多久检查一次要推测执行的Task。
  • spark.speculation.multiplier :默认1.5。一个Stage中,运行时间比成功完成的Task的运行时间的中位数还慢1.5倍的Task才可能会被推测执行。
  • spark.speculation.quantile: 默认0.75。推测的分位数。即一个Stage中,至少要完成75%的Task才开始推测。

Speculation工作流程



版权声明:本文为JiShuiSanQianLi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。