Spark 独立数量执行器/核心控制

Posted

技术标签:

【中文标题】Spark 独立数量执行器/核心控制【英文标题】:Spark Standalone Number Executors/Cores Control 【发布时间】:2016-09-08 19:56:36 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案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 参数。看看这个问题***.com/questions/32621990/… 令人讨厌的部分是--num-executors 仍然被文档随机引用,具有一些测试覆盖率,并且很高兴作为一个选项被接受。还有很多清洁工作要做。 完美答案!你必须设置 spark.cores.max 或 spark.deploy.defaultCores

以上是关于Spark 独立数量执行器/核心控制的主要内容,如果未能解决你的问题,请参考以下文章

Spark Streaming:执行者与自定义接收者的数量

Spark 与执行者和核心数量的关系

spark核心组件的介绍

在 spark 中,我可以定义比可用内核更多的执行程序吗?

Kafka 主题分区到 Spark 流

Spark下载与入门