千家信息网

如何实现Spark Executor内存管理

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了如何实现Spark Executor内存管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言Spark 的内存管理是内存分布式引擎中的一
千家信息网最后更新 2026年11月01日如何实现Spark Executor内存管理

本篇文章为大家展示了如何实现Spark Executor内存管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

前言

Spark 的内存管理是内存分布式引擎中的一个重要角色,了解内存管理机制和原理,才能更好地做优化。

内容

1、静态内存管理(Spark 1.6.x版本前的策略)

静态内存管理图示--堆内


Unroll 的源码参考:https://github.com/apache/spark/blob/branch-1.6/core/src/main/scala/org/apache/spark/storage/MemoryStore.scala#L249

静态内存管理图示--堆外

2、统一内存管理(Spark 1.6.x以后的策略)

统一内存管理图示--堆内

统一内存管理图示--堆外

其中最重要的优化在于动态占用机制,其规则如下: 1\设定基本的存储内存和执行内存区域(spark.storage.storageFraction 参数),该设定确定了双方各自拥有的空间的范围 双方的空间都不足时,则存储到硬盘;若己方空间不足而对方空余时,可借用对方的空间;(存储空间不足是指不足以放下一个完整的 Block) 2\执行内存的空间被对方占用后,可让对方将占用的部分转存到硬盘,然后"归还"借用的空间 3\存储内存的空间被对方占用后,无法让对方"归还",因为需要考虑 Shuffle 过程中的很多因素,实现起来较为复杂

动态占用机制图示

凭借统一内存管理机制,Spark 在一定程度上提高了堆内和堆外内存资源的利用率,降低了开发者维护 Spark 内存的难度,但并不意味着开发者可以高枕无忧。譬如,所以如果存储内存的 空间太大 或者说 缓存的数据 过多,反而会导致频繁的全量垃圾回收,降低任务执行时的性能,因为缓存的 RDD 数据通常都是长期驻留内存的。所以要想充分发挥 Spark 的性能,需要开发者进一步了解存储内存和执行内存各自的管理方式和实现原理。

统一内存管理还可以简化
(1)Reserved Memory

  • 不推荐改变此参数(默认即可);

  • 系统保留的内存,从Spark 1.6.0开始,它的值为300MB,如果没有Spark重新编译或设置 spark.testing.reservedMemory,它的大小不能以任何方式改变,,因为它不是用于生产的测试参数。

  • 如果没有给Spark执行程序至少 1.5 保留内存 = 450MB heap,spark-submit 将失败并显示**"please use larger heap size"*** 的错误消息。

(2)User Memory

  • 在分配 Spark Memory之后剩余的内存池;

  • 用户可以在那里存储将在RDD转换中使用的数据结构、Spark的元数据,所以必须在编码中注意数据结构的定义和使用;

  • 内存池的大小可以计算为(" Java heap " - "reserved memory ")(1.0 - spark.memory.fraction),默认情况下等于(" Java堆 " - 300MB ) 0.25

(3)Spark Memory

  • Apache Spark管理的内存池;

  • 计算:(" Java堆 " - "保留内存 ")* spark.memory.fraction,并且使用Spark 1.6.0默认值它给我们(" Java堆 " - 300MB)* 0.75。
    Execution Memory 和 Storage Memory 的边界由 spark.memory.storageFraction 设置 参数,默认为0.5。

  • Storage Memory:这个内存用于缓存以后还会用到的数据:如广播变量 、persist

  • Execution Memory:这个内存用于存储执行Spark shuffles、joins、sorts和aggregations 期间所需的对象。

上述内容就是如何实现Spark Executor内存管理,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内存 管理 空间 存储 数据 对方 统一 参数 机制 内容 开发者 缓存 静态 开发 重要 动态 原理 双方 大小 性能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 互联网 科技 互联网络科技有限公司 互联网科技公司发展 中国互联网科技发展 互联网科技大会案例 博兴的互联网电子科技公司 以后互联网后是啥科技 互联网科技项目计划书材料类 佳云科技和互联网广告 荆州市昕露互联网络科技有限公司 华夏互联网科技业 互联网科技的全部知识 群盈汇互联网科技有限公司 烟台灵鸽互联网科技有限公司 唯美互联网科技 中国互联网公司的科技投入 悟空问答互联网科技 上海旺乐尼互联网科技有限公司 互联网企业和网络科技有限公司 美国互联网科技巨头监管 九亚互联网科技 有木互联网科技 互联网之后的科技是什么 互联网科技实习生岗位职责 花神(南京)互联网科技有限公司 互联网金融运营模式中的金融科技 米泉互联网科技专业怎么样 深圳互联网科技园地址 陕西彩京云互联网科技有限公司
0