1

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

有人可以在这里阐明一下吗?

4

2 回答 2

2

MapReduce 模型是将作业分解为任务并并行运行任务,以使整体作业执行时间比任务顺序运行时更短。

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

yarn.app.mapreduce.am.job.speculator.class- 此属性用于实现推测执行策略。

于 2017-07-23T14:33:26.363 回答
2

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 驱动程序会花费大量时间进行推测。仅在需要时启用它。

于 2017-09-20T17:45:45.533 回答