“spark.yarn.executor.memoryOverhead”设置的价值是什么?

35

spark.yarn.executor.memoryOverhead 在使用 YARN 的 Spark 作业中应该分配给 App,还是只是分配给最大值?

1个回答

47
spark.yarn.executor.memoryOverhead

只是最大值。目标是将开销计算为实际执行器内存的百分比,由RDD和DataFrames使用。

--executor-memory/spark.executor.memory

控制执行程序堆大小,但JVM也可以在堆外使用一些内存,例如用于interned Strings和direct byte buffers。

spark.yarn.executor.memoryOverhead属性的值会加到executor memory上,以确定每个executor向YARN请求完整内存所需。默认为max(executorMemory * 0.10,最小值为384)。

根据spark.executor.memory属性和spark.yarn.executor.memoryOverhead定义的overhead,执行器将使用内存分配。


谢谢您的回复。我仍然在想,如果我为我的作业申请了Yarn内存,那么设置'spark.yarn.executor.memoryOverhead'的值是否意味着它会为我的作业添加额外的内存? - liyong
16
默认情况下,spark.yarn.am.memoryOverhead是AM内存的0.10倍,最小值为384。这意味着如果我们将spark.yarn.am.memory设置为777M,则实际的AM容器大小将为2G。这是因为777 + Max(384, 777 * 0.10) = 777 + 384 = 1161,而默认的yarn.scheduler.minimum-allocation-mb=1024,因此会分配一个2GB容器给AM。 - Indrajit Swain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接