《零基础入门Spark》学习笔记 Day 04

存储系统

一个大数据查询引擎性能是否高效,其中一个因素就是数据如何存储,如何读取,这个都由存储系统决定,Spark存储系统负责维护全部暂存在内存与磁盘中的数据,这些数据包含Shuffle中间文件、RDD Cache以及广播变量。核心组件有BlockManagerMaster、Executors的BlockManager、MemoryStore和DiskStore。

Shuffle中间文件

Shuffle中间文件在Shuffle的计算过程中,Map Task在Shuffle Write阶段生产data与index文件,index文件提供的分区索引,这点跟Kafka的设计类似,Shuffle Read阶段的Reduce Task从不同节点拉取属于自己的分区数据,而这两个阶段为了完成数据交换所需要的data与index文件

RDD Cache

RDD Cache指的是分布式数据集在内存或是磁盘中的物化,这能提升计算效率。

广播变量

广播变量是以Excecutors为粒度分发共享变量,从而大幅削减数据分发引入的网络与存储开销。

MemoryStore

负责内存中的数据存取,这个记录了数据块的详细信息,它的数据结构是LinkedHashMapBlockId,MemoryEntry,BlockId 标记Block的身份,包括了Block名字、所属RDD、对应RDD数据分区、是否广播变量、 是否为Shuffle Block等。而MemoryEntry承载数据实体,存储的数据分区或广播变量。

DiskStore

负责磁盘中的数据访问,DiskBlockManager主要维护数据块与文件之间的映射关系,就可以轻松地完成磁盘中的数据访问。

BlockManager

核心职责是管理数据块的元数据,这些元数据记录并维护数据块的地址、位置、尺寸以及状态。它通过DiskStore来实现磁盘数据的存取与访问。DiskStore并不直接维护元数据列表,是通过DiskBlockManager来完成从数据库到磁盘文件的映射,从而完成数据访问。

总的来说,BlockManager通过MemoryStore来完成内存的数据存取,MemoryStore通过LinkedHashMap来完成Block到MemoryEntry的映射。而BlockId记录着数据块的元数据,而MemoryEntry则用于封装数据实体。通过DiskStore来实现磁盘数据的存取与访问。DiskStore并不直接维护元数据列表,而是通过DiskBlockManager来完成从数据库到磁盘文件的映射,进而完成数据访问。

相关推荐
xian_wwq10 分钟前
【学习笔记】OWASP Agentic 应用安全(二)
笔记·学习·安全·owasp
张继雁1 小时前
张继雁 个人技术简介|磨削加工过滤方向
大数据·数据库·论文阅读·人工智能·机器学习·创业创新·业界资讯
AIwenIPgeolocation1 小时前
埃文科技签约中部(河南)Token产业运营平台 携手中国电信共创AI新格局
大数据·人工智能·科技
小弥儿1 小时前
GitHub今日热榜 | 2026-09-04:Agent省 token 成今日主线
学习·开源·github
前端精髓1 小时前
NestJS 是什么(对着 Spring Boot 一起学习)
spring boot·后端·学习
Lumistory1 小时前
从OPPO长安研发中心看头部科技企业的照明运维选择
大数据·运维·人工智能·光照贴图
kyrie_sakura2 小时前
MySQL数据库学习笔记2--系统函数(分组,单行,窗口函数)
数据库·学习·mysql
dadaobusi2 小时前
学习:XS-Gem5参数
学习
沪上企服通2 小时前
代账数据的可移植性设计:开放接口、账套导出与 exit strategy 工程笔记(上海 5 家样本对照)
笔记·策略模式
HZZD_HZZD3 小时前
智能水电表厂家怎么评估:制造能力、资质合规与交付保障的核查清单
大数据·制造