YARN上的Spark:比通过spark-submit

时间:2016-07-13 08:58:11

标签: apache-spark containers yarn hortonworks-data-platform executor

我使用以下设置在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个工作核心)
    • 最小#vcores / container =最大#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 个答案:

答案 0 :(得分:3)

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

您可以通过设置spark.memory.fraction(不推荐)来控制此金额。请参阅Spark's documentation

中的详情