Spark单机号Executors/Cores控件
Spark Standalone Number Executors/Cores Control
所以我有一个带有 16 个内核和 64GB RAM 的 spark 独立服务器。我在服务器上同时拥有 master 和 worker 运行。我没有启用动态分配。我在使用 Spark 2.0
我不明白的是当我提交我的工作并指定:
--num-executors 2
--executor-cores 2
只需要占用4个核心。然而,当提交作业时,它会占用所有 16 个核心并启动 8 个执行程序,绕过 num-executors
参数。但是如果我将 executor-cores
参数更改为 4
它将相应地调整并且 4 个执行程序将启动。
免责声明:我真的不知道 --num-executors
是否应该在独立模式下工作。我还没有看到它在 YARN 之外使用。
注意:正如Marco --num-executors
is no longer in use on YARN所指出的那样。
通过组合 spark.cores.max
和 spark.executor.cores
,您可以通过静态分配在独立模式下有效地控制执行程序的数量(这也适用于 Mesos),其中执行程序的数量确定为:
floor(spark.cores.max / spark.executor.cores)
例如:
--conf "spark.cores.max=4" --conf "spark.executor.cores=2"
所以我有一个带有 16 个内核和 64GB RAM 的 spark 独立服务器。我在服务器上同时拥有 master 和 worker 运行。我没有启用动态分配。我在使用 Spark 2.0
我不明白的是当我提交我的工作并指定:
--num-executors 2
--executor-cores 2
只需要占用4个核心。然而,当提交作业时,它会占用所有 16 个核心并启动 8 个执行程序,绕过 num-executors
参数。但是如果我将 executor-cores
参数更改为 4
它将相应地调整并且 4 个执行程序将启动。
免责声明:我真的不知道 --num-executors
是否应该在独立模式下工作。我还没有看到它在 YARN 之外使用。
注意:正如Marco --num-executors
is no longer in use on YARN所指出的那样。
通过组合 spark.cores.max
和 spark.executor.cores
,您可以通过静态分配在独立模式下有效地控制执行程序的数量(这也适用于 Mesos),其中执行程序的数量确定为:
floor(spark.cores.max / spark.executor.cores)
例如:
--conf "spark.cores.max=4" --conf "spark.executor.cores=2"