推测执行Mapreduce / Spark

时间:2017-07-23 13:35:33

标签: apache-spark mapreduce speculative-execution

我知道Hadoop / Spark框架会检测失败或慢速的机器并在不同的机器上执行相同的任务。将如何(在什么基础上)框架确定 慢跑机器。是否有任何类型的统计数据供框架决定?

有人可以在这里点亮一些光吗?

2 个答案:

答案 0 :(得分:2)

MapReduce模型是将作业分解为任务并并行运行任务 使整个作业执行时间小于任务运行时的执行时间 顺序。

yarn.app.mapreduce.am.job.task.estimator.class - 当MapReduce模型午餐时,这个属性和实现被用于估计运行时的任务完成时间。任务的估计完成时间应少于一分钟。如果任务超出此估计时间,则可将其标记为运行缓慢的任务。

yarn.app.mapreduce.am.job.speculator.class - 正在使用此属性 实施投机执行政策。

答案 1 :(得分:1)

Spark.speculation默认值为false如果设置为“true”,则执行推测执行任务。这意味着如果一个或多个任务在一个阶段中运行缓慢,它们将被重新启动。

enter image description here

http://spark.apache.org/docs/latest/configuration.html

您可以将这些标志添加到spark-submit中,并将它们传递给--conf例如:

spark-submit \
--conf "spark.speculation=true" \
--conf "spark.speculation.multiplier=5" \
--conf "spark.speculation.quantile=0.90" \
--class "org.asyncified.myClass" "path/to/Vaquarkhanjar.jar"

注意: 在管理大量任务时,Spark驱动程序花费大量时间进行推测。只在需要时启用它。

相关问题