我在纱线上生出火花。我不明白以下设置spark.yarn.executor.memoryOverhead
和spark.memory.offHeap.size
之间有什么区别。两者似乎都是用于分配堆外内存以激发执行程序的设置。我应该使用哪一个?另外,对执行程序堆内存的推荐设置是什么?
非常感谢!
spark.yarn.executor.memoryOverhead
在StaticMemoryManager中使用。在较旧的Spark版本(如1.2)中使用。每个执行者要分配的堆外内存量(以兆字节为单位)。这是内存,用于解决VM开销,内部字符串,其他本机开销等问题。随着执行程序大小的增加(通常为6%至10%),该内存通常会增加。
您可以在较旧的Spark文档中找到此文档,例如Spark1.2文档:
https://spark.apache.org/docs/1.2.0/running-on-yarn.html
spark.memory.offHeap.size
用于UnifiedMemoryManager,在版本1.6之后默认使用]可用于堆外分配的绝对内存量(以字节为单位)。此设置对堆内存使用没有影响,因此,如果执行者的总内存消耗必须在某个硬限制内,那么请确保相应地缩小JVM堆大小。当spark.memory.offHeap.enabled = true时,必须将此值设置为正值。
您可以在最新的Spark文档中找到此文档,例如Spark2.4文档:
https://spark.apache.org/docs/2.4.4/configuration.html