欢迎关注github《大数据成神之路》
目录
一、概述
二、堆内和堆外内存规划
2.1 堆内内存
2.2 堆外内存
2.3 内存管理接口
三、内存空间分配
3.1 静态内存管理
3.2 统一内存管理
四、存储内存管理
4.1 RDD 的持久化机制
4.2 RDD 缓存的过程
4.3 淘汰和落盘
五、 执行内存管理
5.1 多任务间内存分配
5.2 Shuffle 的内存占用
正文
一、概述
Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于 Spark 2.1 版本,阅读本文需要读者有一定的 Spark 和 Java 基础,了解 RDD、Shuffle、JVM 等相关概念。
在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job)