Executor 端的内存模型,包括堆内内存(On-heap Memory)和堆外内存(Off-heap Memory)
存管理接口(MemoryManager )
Spark 为Execution 内存和Storage 内存的管理提供了统一的接:MemoryManager。
MemoryManager 的具体实现上,Spark 1.6 之后默认为统一管理(Unified Memory Manager)方式,1.6 之前采用的静态管理(Static Memory Manager)方式仍被保留,可通过配置 spark.memory.useLegacyMode 参数启用。
1静态内存管理(Static Memory Manager)
堆内空间管理
存储内存、执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的,但可以在应用程序启动前进行配置。
可用的Execution 内存和 可用的Storage 内存计算公式:
可用的Execution 内存 = systemMaxMemory * spark.shuffle.memoryFraction * spark.shuffle.safe