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

相关推荐
Georgeviewer3 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
腻害兔4 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
GIR1235 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
克里斯蒂亚诺更新6 小时前
ruoyi角色权限的对应关系
笔记
南讯股份Nascent6 小时前
洽洽全域会员项目启动会圆满召开
大数据·人工智能
大郭鹏宇6 小时前
基于 LangGraph 构建智能分诊系统(一):项目概述与环境搭建
大数据·人工智能·microsoft·langchain
a1117768 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao8 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
破碎的南瓜10 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
天天爱吃肉821810 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车