spark内存管理

Execution:在执行shuffle、join、sort和aggregation时,用于缓存中间数据。通过spark.shuffle.memoryFraction进行配置,默认为0.2。
Storage:主要用于缓存数据块以提高性能,同时也用于连续不断地广播或发送大的任务结果。通过`spark.storage.memoryFraction进行配置,默认为0.6。
Other:这部分内存用于存储运行Spark系统本身需要加载的代码与元数据,默认为0.2。

整体内存划分管理:

    1.6版本之前 StaticMemoryManager 内存的分配是静态的,以配置的方式进行设置,对应的管理类为StaticMemoryManager
        
        spark.shuffle.memoryFraction 默认为0.2。
        spark.storage.memoryFraction 默认为0.6

        spark.shuffle.safeFraction(默认值为0.8)
        spark.storage.safeFraction(默认值为0.9)
        spark.storage.unrollFraction(默认值为0.2)


    从Spark 1.6版本开始 Unified Memory Management

        spark.memory.fraction(默认值为0.75)
        spark.memory.storageFraction(默认值为0.5)
        spark.memory.useLegacyMode(默认值为false)

执行内存管理:

    ShuffleMemoryManager、TaskMemoryManager 任务1对1、ExecutorMemoryManager JVM 1对1

存储内存管理:

    BlockManager
    Storage Level + 是否序列化 ,如 MEMORY_AND_DISK_SER
    BlockManager的Unrolling操作,内存倘若不够,会从Storage Memory中借用。这个借用者其实是很霸道的,倘若当前没有Block,他可以借走所有的Storage Memory空间,如果Storage Memory已有block使用,他还会鹊巢鸠占,强制将内存中的block抹去,唯一约束他的是spark.storage.unrollFraction


原文地址:https://zhangyi.gitbooks.io/spark-in-action/content/chapter2/memory_management.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值