【问题标题】:spark.executor.instances over spark.dynamicAllocation.enabled = Truespark.executor.instances over spark.dynamicAllocation.enabled = True
【发布时间】:2019-04-24 06:04:49
【问题描述】:

我正在使用启用了动态分配的 MapR 分发的 Spark 项目工作。请参考以下参数:

spark.dynamicAllocation.enabled         true
spark.shuffle.service.enabled           true
spark.dynamicAllocation.minExecutors    0
spark.dynamicAllocation.maxExecutors    20
spark.executor.instances                2

根据我的理解 spark.executor.instances 是我们在提交 pySpark 作业时定义为 --num-executors 的内容。

我有以下两个问题:

  1. 如果我在提交作业期间使用--num-executors 5,它会覆盖spark.executor.instances 2 配置设置吗?

  2. 在已定义动态分配最小和最大执行程序时定义spark.executor.instances 的目的是什么?

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    还有一个参数是

    spark.dynamicAllocation.initialExecutors
    

    它采用spark.dynamicAllocation.minExecutors 的值。如果spark.executor.instances 已定义并且它大于 minExecutors 则它将采用初始 executors 的值。

    【讨论】:

    • 是的,我知道 spark.dynamicAllocation.initialExecutors,但我的问题是关于 spark.executor.instances。如果定义了动态分配,那么拥有 spark.executor.instances 有什么用。
    • 如果定义了动态分配,那么在企业应用程序中根本不需要定义执行器的数量。动态分配属性将在最小和最大执行者范围之间分配执行者。但如果它的定义大于 min executors 属性,那么运行至少需要该数量的 executors。
    【解决方案2】:

    spark.executor.instances 基本上是静态分配的属性。但是,如果启用动态分配,则初始执行器集将至少等于spark.executor.instances

    当您设置 --num-executors 时,它不会在配置设置中被覆盖。

    额外阅读:official doc

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 2017-03-06
      • 2011-09-29
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 2011-10-01
      • 2020-06-17
      相关资源
      最近更新 更多