Spark Executor内存管理以及shuffle调优

本文介绍了Spark Executor的两种内存管理模式:静态内存管理和统一内存管理,详细解析了各部分内存的分配与作用。同时,文章探讨了shuffle调优的关键参数,包括shuffle write task的buffer大小、shuffle read task的buffer大小、重试机制、内存分配比例以及ShuffleManager的选择,提供了性能优化的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Executor内存管理

spark管理Executor进程的内存有两种管理模式:

  • 静态内存管理
  • 统一内存管理

静态内存管理

在这里插入图片描述
静态内存管理模式中executor内存分成3个部分

  1. executor60%的内存,用于storage过程,由spark.stoarge.memoryFraction配置,这块内存又分为2个部分:
        1). 90%的内存用于storage安全可用,由spark.storage.safetyFraction配置,这块内存又分为2个部分:
            ①. 20%的内存用于unroll,反序列化过程,由spark.stoarge.unrollFraction配置
            ②. 剩下的内存用于存储RDD的缓存数据和广播变量
        2). 剩下的内存由于防止OOM
  2. executor20%的内存,用于shuffle过程,由spark.shuffle.memoryFraction配置,这块内存又分为2个部分:
        1). 20%的内存用于防止OOM,由spark.shuffle.safetyFraction配置
        2). 剩下的内存用于shuffle聚合安全可用
  3. executor20%的内存,用于task执行以及存储task产生的对象

统一内存管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值