Spark的新方案UnifiedMemoryManager内存管理模型分析

StaticMemoryManager继承与MemoryManager,它是静态的内存分配,是1.6版本以前的实现,就像是建筑商建造好了房子,用户来到直接住进去就好了(弊端:有的人多住了小房子,有的人少住了大房子)。而UnifiedMemoryManager是自由分配内存的实现,相当于组装房,你要多大我给你多大。

Spark的新方案UnifiedMemoryManager内存管理模型分析_第1张图片

#1.初始化
  spark.memory.useLegacyMode值为 false:创建 UnifiedMemoryManager 类实例,该类为新的内存管理模块的实现

else {
        // 否则,使用最新的UnifiedMemoryManager内存管理模型,即统一内存管理模型
        // 我们再看下UnifiedMemoryManager,即统一内存管理器。在SparkEnv中,它是通过如下方式完成初始化的:
        // 读者这里可能有疑问了,为什么没有new关键字呢?这正是scala语言的特点。
        // 它其实是通过UnifiedMemoryManager类的apply()方法完成初始化的。
        UnifiedMemoryManager(conf, numUsableCores)
      }

然后调用

 /**
    * 使用apply方法进行初始化
    * */
  def apply(conf: SparkConf, numCores: Int): UnifiedMemoryManager = {
    // 获得execution和storage区域共享的最大内存
    val maxMemory = getMaxMemory(conf)
    /

你可能感兴趣的:(大数据-spark)