《零基础入门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

负责内存中的数据存取,这个记录了数据块的详细信息,它的数据结构是LinkedHashMap[BlockId,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来完成从数据库到磁盘文件的映射,进而完成数据访问。

相关推荐
2601_957786772 分钟前
星链引擎矩阵系统:流批一体湖仓架构与亿级数据实时数仓技术实践
大数据·矩阵·架构
2601_957786779 分钟前
企业级内容矩阵全链路自动化运营技术实现与实践
大数据·矩阵·自动化
跨境卫士—小依9 分钟前
低值包裹全面计税之后跨境卖家如何重做小额订单承接逻辑
大数据·人工智能·跨境电商·亚马逊·营销策略
噗噗129 分钟前
企业微信 API 实操系列:构建全链路私域自动化增长体系
大数据·自动化·企业微信
白小沫28 分钟前
解决 TortoiseSVN 文件夹不显示图标的问题(Windows 10/11 通用)
windows·经验分享·笔记
莽撞的大地瓜33 分钟前
政企舆情大数据服务平台:新浪舆情通以技术赋能全流程管理
大数据·数据库·数据分析
莽撞的大地瓜39 分钟前
舆情分析智能体:蜜度新浪舆情通以多Agent协同驱动全流程智能升级
大数据·数据仓库·数据分析
_李小白41 分钟前
【Android车载学习笔记】第一天:Android Automotive OS介绍
android·笔记
Promise微笑1 小时前
Geo专家于磊:Json-LD优化实战SOP与双核四驱体系
大数据·人工智能·重构·json
行业研究员1 小时前
2026 Agent Memory主流方案能力解析与落地选型
大数据·数据库·agent记忆