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

相关推荐
黄焖鸡能干四碗2 小时前
企业数据架构、应用架构、技术架构设计方案(PPT文件)
大数据·运维·数据库·安全·架构·需求分析
码码哈哈0.02 小时前
IoT(物联网)编程入门学习路线(从0到能做项目)
物联网·学习
中屹指纹浏览器2 小时前
2026指纹浏览器技术选型与性能优化实践
经验分享·笔记
老星*2 小时前
AppFlowy:开源笔记工具完全指南:Notion本地替代方案的完整教程
笔记·notion
码云数智-大飞2 小时前
PHP-FPM 进程池调优指南:高并发下的内存平衡术
大数据
岑梓铭2 小时前
《考研408数据结构》第三章3(数组矩阵)复习笔记
数据结构·笔记·矩阵
Elastic 中国社区官方博客2 小时前
我们如何修复 OpenTelemetry 中基于 head 的采样
大数据·开发语言·python·elasticsearch·搜索引擎
编程小风筝2 小时前
机器学习的半监督学习可以实现什么功能?
人工智能·学习·机器学习
D愿你归来仍是少年2 小时前
Apache Spark 详细讲解第 7 章:Shuffle 机制深度解析
大数据·spark·apache