《零基础入门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来完成从数据库到磁盘文件的映射,进而完成数据访问。

相关推荐
Alex艾力的IT数字空间2 小时前
在 Kylin(麒麟)操作系统上搭建 Docker 环境
大数据·运维·缓存·docker·容器·负载均衡·kylin
寒秋花开曾相惜3 小时前
(学习笔记)第四章 处理器体系结构
linux·网络·数据结构·笔记·学习
智能化咨询4 小时前
(163页PPT)某著名企业K3生产制造售前营销指导方案P164(附下载方式)
大数据·人工智能
低代码布道师5 小时前
微搭低代码MBA 培训管理系统实战 30——学习卡
学习·低代码·rxjava
南無忘码至尊5 小时前
Unity学习90天 - 第 6天 - 学习协程 Coroutine并实现每隔 2 秒生成一波敌人
学习·unity·c#·游戏引擎
LN花开富贵5 小时前
【ROS】鱼香ROS2学习笔记二
linux·笔记·python·学习·嵌入式
檬柠wan5 小时前
MySQL-数据库增删改查学习
数据库·学习·mysql
ouliten6 小时前
C++笔记:std::invoke
c++·笔记
minglie16 小时前
Zynq 开发中的工程文件管理
学习
陈老老老板7 小时前
Bright Data Web Scraper 实战:构建 eBay Web Scraping 自动化 Skill(2026)
大数据·人工智能·自动化