减少执行者核心数量会减少执行者内存吗?

Gli*_*ide 8 hadoop-yarn apache-spark

我的Spark作业因YARN错误而失败Container killed by YARN for exceeding memory limits 10.0 GB of 10 GB physical memory used

凭直觉,我将核心数从减少51,并且作业成功完成。

我没有增加,executor-memory因为这10g是我的YARN群集的最大值。

我只是想确认我的直觉。减少executor-cores消费数量会减少executor-memory吗?如果是这样,为什么?

mor*_*007 5

spark.executor.cores = 5, spark.executor.memory=10G
Run Code Online (Sandbox Code Playgroud)

这意味着一个 executor 可以并行运行 5 个任务。这意味着 10 GB 需要由 5 个任务共享。因此平均有效 - 每个任务将有 2 GB 可用。如果所有任务消耗超过 2 GB,那么整个 JVM 最终将消耗超过 10 GB,因此 YARN 将终止容器。

spark.executor.cores = 1, spark.executor.memory=10G
Run Code Online (Sandbox Code Playgroud)

这意味着执行程序只能运行 1 个任务。这意味着 10 GB 完全可用于 1 个任务。因此,如果任务使用超过 2 GB 但少于 10 GB,它会正常工作。你的工作就是这种情况,所以它奏效了。