参数作用
Spark是运行在executor container进程的 JVM上的,spark.yarn.executor.memoryOverHead 指的是executor jvm的堆外内存。
Executor container 消耗的总内存 = spark.yarn.executor.memoryOverhead + spark.executor.memory + spark.memory.offHeap.size+spark.executor.pyspark.memory
其中spark.executor.memory ,spark.memory.offHeap.size 是spark运行时消耗的对象的存储内存。
spark.executor.pyspark.memory 是pyspark运行时,在spark.executor.memory + spark.memory.offHeap.size之外的开销。
spark.yarn.executor.memoryOverhead 指的是executor container进程,运行时数据区非堆部分的开销,即执行开销。
它包括JVM执行时自身所需要的内容,包括线程堆栈、IO、编译缓存等所使用的内存。
失效原因
在spark源码中,该参数出现在如下位置:
AlternateConfig的key会被desprecated。
所以,自spark 2.3之后,将使用spark.executor.memoryOverhead,废弃spark.yarn.executor.memoryOverhead。