最近疑惑一个问题,spark executor的堆外内存问题,堆外内存很好理解,这里不再解释,疑惑的是它的设置,看过官网就知道设置堆外内存的参数为spark.executor.memoryOverhead与spark.memory.offHeap.size(需要与
spark.memory.offHeap.enabled同时使用),其中这两个都是描述堆外内存的,但是它们有什么区别么?
因为对两个参数不是很理解,所以我在集群上找了个任务,对这两个参数进行研究。

我是通过storage memory的计算来分析,因为storage memory的计算中包含了堆外内存。
正确的:
storage memory = (spark.executor.memory - 300M) * spark.storage.memoryFraction * spark.storage.safetyFraction + 堆外内存
如果想详细了解请看我的另一篇博客
https://blog.csdn.net/lquarius/article/details/106558464
已知:
storage memory 4.7G(见下图)spark.executor.memory 1G(默认 )spark.storage.memoryFraction 0.6(默认 )spark.storage.safetyFraction 0.5(默认 )spark.executor.memoryOverhead 5G<