Spark Storage之DiskStore
来源:互联网 发布:php 输出正三角形 编辑:程序博客网 时间:2024/06/06 02:24
概要
上篇文章介绍了MemoryStore对内存数据的管理,DiskStore是BlockStore的另一个实现类,负责管理磁盘数据。
结构
DiskStore继承BlockStore,实现了相关抽象方法,类图如下
DiskStore
DiskStore实现了BlockStore的putBytes、putArray、putIterator等方法,将数据写到磁盘,主要功能包括以下两点
- 序列化
putArray方法输入参数为Array[Any],写入磁盘需要对数据进行序列化操作,类似的,getValues方法需要对数据进行反序列化操作,默认使用JavaSerializer。 - Java NIO
读写磁盘文件使用的是Java NIO,涉及到的API主要包括java.nio.ByteBuffer、java.nio.channels.FileChannel,更多内容参考Java NIO – Using ByteBuffer,和Spark中用法基本一致。
DiskBlockManager
DiskBlockManager的功能是维护了BlockId和对应的磁盘文件位置的关系,即BlockId对应的数据的存储位置,后面详细介绍。
磁盘文件组织
DiskBlockManager负责组织磁盘文件结构,提供根据blockId(即文件名)返回File对象的getFile方法,如下
如上图注释,DiskBlockManager使用两级目录管理文件,如下
例子
结合上面图表和代码,假设要存储的数据为ShuffleData,那么,这条数据的最终存储路径可以是/tmp/blockmgr-db9f05c5-4e94-47d5-a601-61944a53d345/3e/shuffle_1_9_0.data,也就是上面介绍的/$spark.local.dir/一级目录/二级目录/文件名的格式,其中shuffle_1_9_0.data中的1、9、0分别代表 shuffleId、mapId、reduceId 。
总结
介绍Spark对于磁盘文件的管理及读写。
阅读全文
1 0
- Spark Storage之DiskStore
- Spark源码阅读笔记之DiskStore
- spark core 2.0 DiskStore
- Spark Storage之MemoryStore
- Spark Storage之ExternalBlockStore
- Spark之 Data storage 模块
- Spark源码分析之-Storage模块
- Spark源码分析之-Storage模块
- Spark-storage
- Spark源码系列之Spark内核——Storage模块
- Spark性能相关参数配置 之 Storage相关配置参数
- spark storage相关配置
- spark源码分析-storage
- 9-1、Spark-Storage
- Spark Storage概述
- spark-storage模块源码分析
- spark-Storage 模块整体架构
- Spark SQL 源码分析之 In-Memory Columnar Storage 之 cache table
- Android App第一次开始进入的界面,沉浸式状态栏
- 求直线ax+by+c=0 上有多少个整点(x,y)满足x∈[-100,100],y∈[-100,100]
- kotlin 学习笔记(1)
- linux挑战:grep+正则表达式
- 贪心算法——活动选择
- Spark Storage之DiskStore
- MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction
- Ajax跨域请求--Jsonp
- ISO8583 按PBOC要求完成8583信息的组包及解包
- grep 同时排除多个关键字
- Python_小知识汇总
- JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
- Socket监听本机端口
- 如何使用canvas绘图