【问题标题】:Spark Standalone Number Executors/Cores ControlSpark 独立数量执行器/核心控制
【发布时间】:2018-06-02 06:23:30
【问题描述】:

所以我有一个 16 核和 64GB 内存的 spark 独立服务器。我在服务器上运行了主服务器和工作程序。我没有启用动态分配。我正在使用 Spark 2.0

我不明白的是当我提交我的工作并指定时:

--num-executors 2
--executor-cores 2 

应该只占用 4 个核心。然而,当提交作业时,它会占用所有 16 个内核并启动 8 个执行器,绕过num-executors 参数。但是如果我将executor-cores 参数更改为4,它会相应地调整并且4 个执行器将启动。

【问题讨论】:

    标签: apache-spark apache-spark-standalone


    【解决方案1】:

    免责声明:我真的不知道--num-executors 是否应该在独立模式下工作。我还没有看到它在 YARN 之外使用过。

    注意:正如Marco--num-executorsis no longer in use on YARN所指出的。

    您可以通过将spark.cores.maxspark.executor.cores 组合在一起,通过静态分配有效地控制独立模式下的执行器数量,其中执行器的数量确定为:

    floor(spark.cores.max / spark.executor.cores)
    

    例如:

    --conf "spark.cores.max=4" --conf "spark.executor.cores=2"
    

    【讨论】:

    • 谢谢,是的,我们做独立的原因是我们有 3 个流式作业,它们相互提供,为了测试,我们现在只使用 1 个盒子。所以我们也只是在做 --master local[4]
    • 我尝试在我的独立环境中使用相同的“--num-executors”属性,但它不起作用,当我尝试使用 YARN 集群时它工作正常。看起来它仅适用于 YARN 部署。您只能使用“spark.cores.max”和“spark.executor.cores”属性来控制独立部署中的执行器数量。
    • --num-executors 只是一个 YARN 参数。看看这个问题stackoverflow.com/questions/32621990/…
    • 令人讨厌的部分是--num-executors 仍然被文档随机引用,具有一些测试覆盖率,并且很高兴作为一个选项被接受。还有很多清洁工作要做。
    • 完美答案!你必须设置 spark.cores.max 或 spark.deploy.defaultCores
    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多