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-executors
is no longer in use on YARN所指出的。
您可以通过将spark.cores.max
和spark.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 独立数量执行器/核心控制的主要内容,如果未能解决你的问题,请参考以下文章