我知道 Hadoop/Spark 框架会检测故障或慢速机器并在不同机器上执行相同的任务。框架将如何(在什么基础上)识别运行缓慢的机器。框架是否有任何统计数据可以决定?
有人可以在这里阐明一下吗?
我知道 Hadoop/Spark 框架会检测故障或慢速机器并在不同机器上执行相同的任务。框架将如何(在什么基础上)识别运行缓慢的机器。框架是否有任何统计数据可以决定?
有人可以在这里阐明一下吗?
MapReduce 模型是将作业分解为任务并并行运行任务,以使整体作业执行时间比任务顺序运行时更短。
yarn.app.mapreduce.am.job.task.estimator.class
- 当 MapReduce 模型午餐新作业时,此属性和实现用于估计运行时的任务完成时间。一项任务的预计完成时间应少于一分钟。如果任务运行超出此估计时间,则可以将其标记为运行缓慢的任务。
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 驱动程序会花费大量时间进行推测。仅在需要时启用它。