Spark的内存模型

Spark的内存模型

详细了解说明了由于kafka内存管理记录的内存使用量不能精确计算导致OOM高发

内存模型分为静态内存管理&统一内存管理,使用spark.memory.useLegacyMode来配置,在1.6前的静态内存管理StaticMemoryManager

在这里插入图片描述

统一内存管理UnifiedMemoryManager

在这里插入图片描述

内存动态占用机制

在这里插入图片描述

Spark内存模型是指Spark在内存中管理和处理数据的方式。Spark使用了一种称为弹性分布式数据集(Resilient Distributed Dataset,简称RDD)的数据结构来表示和操作数据。 RDD是一个可分区、可并行计算的数据集合,它可以在集群中的多个节点上进行并行处理。RDD的特点是不可变性和容错性,即RDD的数据是只读的,一旦创建就不能修改,同时RDD会自动记录数据的血统信息,以便在节点故障时进行恢复。 Spark内存模型主要包括以下几个部分: 1. Driver:驱动器是Spark应用程序的主要控制节点,负责整个应用程序的调度和协调工作。驱动器程序会将应用程序划分为一系列的任务,并将这些任务分发给集群中的工作节点进行执行。 2. Executor:执行器是运行在集群中的工作节点上的进程,负责执行驱动器分发的任务。每个执行器都有自己的JVM进程,并且可以同时运行多个任务。执行器通过与驱动器通信来接收任务,并将任务结果返回给驱动器。 3. RDD:RDD是Spark中的核心数据结构,它代表了一个可分区、可并行计算的数据集合。RDD可以从外部数据源创建,也可以通过对其他RDD进行转换操作得到。RDD的数据可以被分区存储在内存中,以便并行处理。 4. 分区:RDD的数据可以被划分为多个分区,每个分区都是一个独立的数据片段。分区是Spark并行计算的基本单位,每个分区可以在一个执行器上进行处理。分区的数量决定了并行计算的程度。 5. 内存管理:Spark使用内存来缓存RDD的数据,以便加速后续的计算操作。Spark提供了两种类型的内存管理方式:堆内存和堆外内存。堆内存用于存储RDD的元数据和执行过程中的临时数据,而堆外内存则用于缓存RDD的数据分区。 6. 数据共享:Spark通过共享RDD的方式来实现数据的复用和传递。当一个RDD被多个任务使用时,Spark会将该RDD的数据分区复制到各个任务所在的执行器上,以便并行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值