我知道Hadoop / Spark框架会检测失败或慢速的机器并在不同的机器上执行相同的任务。将如何(在什么基础上)框架确定 慢跑机器。是否有任何类型的统计数据供框架决定?
有人可以在这里点亮一些光吗?
答案 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”,则执行推测执行任务。这意味着如果一个或多个任务在一个阶段中运行缓慢,它们将被重新启动。
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驱动程序花费大量时间进行推测。只在需要时启用它。