【问题标题】:Speculative execution Mapreduce/Spark推测执行 Mapreduce/Spark
【发布时间】:2017-12-29 03:49:46
【问题描述】:

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

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

【问题讨论】:

    标签: apache-spark mapreduce speculative-execution


    【解决方案1】:

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

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

    yarn.app.mapreduce.am.job.speculator.class - 正在使用此属性 实施推测执行策略。

    【讨论】:

      【解决方案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 driver 会花费大量时间进行推测。仅在需要时启用它。

      【讨论】:

        猜你喜欢
        • 2014-07-19
        • 1970-01-01
        • 2014-03-28
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        • 2013-02-16
        • 2018-09-27
        • 1970-01-01
        相关资源
        最近更新 更多