推测执行 Mapreduce/Spark

Speculative execution Mapreduce/Spark

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

有人可以在这里阐明一些问题吗?

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

yarn.app.mapreduce.am.job.task.estimator.class- 当 MapReduce 模型启动一个新作业时,此 属性 和实施用于估计 运行 时的任务完成时间。任务的估计完成时间应少于一分钟。如果任务 运行ning 超出了这个估计时间,它可以标记为慢速 运行ning 任务。

yarn.app.mapreduce.am.job.speculator.class - 这个 属性 正在被使用 实施推测执行政策。

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

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 driver 在管理大量任务时,花费大量时间在推测上。仅在需要时启用它。