所以我有一个带有16个内核和64GB内存的spark独立服务器。我在服务器上运行主服务器和工作服务器。我没有启用动态分配。我在Spark 2.0
我不明白的是,当我提交工作并指明:
--num-executors 2
--executor-cores 2
只应占用4个核心。然而,当提交作业时,它会占用所有16个内核,并且无论如何都会绕过num-executors
参数旋转8个执行程序。但是如果我将executor-cores
参数更改为4
,它将相应地进行调整,并且4个执行器将会启动。
答案 0 :(得分:12)
免责声明:我真的不知道--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"