Spark 1.6 内存管理模型( Unified Memory Management)分析
前言 新的内存模型是在这个Jira提出的,JIRA-10000,对应的设计文档在这:unified-memory-management。 贴出这个文档是为了让大家可以更深入的了解这个新的模型的设计动机,社区想到的解决方案,以及经过对比,最终选择了哪个方案。当然我在文章中也会有所提及,但这个不会是本文的重点。 Memory Manager 在Spark 1.6 版本中,memoryManager 的选择是由 spark.memory.useLegacyMode=false 决定的。如果采用1.6之前的模型,这会使用StaticMemoryManager来管理,否则使用新的。 UnifiedMemoryManager 我们先看看1.6之前,对于一个Executor,内存都有哪些部分构成: ExecutionMemory。这片内存区域是为了解决 shuffles,joins, sorts and aggregations 过程中为了避免频繁IO需要的buffer。 通过spark.shuffle.memoryFraction(默认 0.2) 配置。 StorageMemory。这片内存区域是...

