首页 文章

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

提问于
浏览
2

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

  • 1 Masternode

  • 64 GB RAM(可用48 GB)

  • 12个核心(可用8个核心)

  • 5 Slavenodes

  • 64 GB RAM(可用48 GB)
    每个

  • 12个核心(可用8个核心)

  • YARN设置

  • 所有容器(一个主机)的内存:48 GB

  • 最小容器大小=最大容器大小= 6 GB
    集群中的

  • vcores = 40(5 x 8个工作核心)

  • minimum #vcores / container = maximum #vcores / container = 1

当我使用命令 spark-submit --num-executors 10 --executor-cores 1 --executor-memory 5g ... 运行我的spark应用程序时,Spark应该为每个执行程序提供5 GB的RAM(由于某些开销内存为~10%,我将内存仅设置为5g) .

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

screenshot

有人可以解释为什么分配的内存如此之少?

1 回答

  • 3

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

    您可以通过设置 spark.memory.fraction (不推荐)来控制此金额 . 查看更多Spark's documentation

相关问题