YARN 上的 Spark:执行程序内存少于通过 spark-submit 设置的内存

Spark on YARN: Less executor memory than set via spark-submit

我在 YARN 集群 (HDP 2.4) 中使用 Spark,设置如下:

当我 运行 我的 spark 应用程序使用命令 spark-submit --num-executors 10 --executor-cores 1 --executor-memory 5g ... Spark 应该给每个执行程序 5 GB 的 RAM 权利(我只将内存设置为 5g,因为一些内存开销约为 10%) .

但是当我查看 Spark UI 时,我看到每个执行器只有 3.4 GB 的内存,请看截图:

有人可以解释为什么分配的内存这么少吗?

UI中的storage memory列显示用于执行和RDD存储的内存量。默认情况下,这等于 (HEAP_SPACE - 300MB) * 75%。其余内存用于内部元数据、用户数据结构和其他内容。

您可以通过设置 spark.memory.fraction 来控制此数量(不推荐)。在 Spark's documentation

中查看更多信息