spark 存储管理
来源:互联网 发布:mac系统软件卸载 编辑:程序博客网 时间:2024/06/05 03:25
1.spark数据块block的种类有哪些?
RDD数据块:用来标识所缓存的RDD数据。
Shuffle数据块:用来标识持久化的shuffle数据。
广播变量数据块:标识广播变量数据
任务返回结果数据块:标识存储在存储管理模块内部的任务返回结果,如果通过akka返回到Driver端,会造成akka帧溢出。akka可以并发处理多客户端请求,以及不同机器节点之间的消息传递等。
流式数据块:只用在sparkstreaming中,用来标识接收到的流式数据块。
2.RDD跟数据块的关系
RDD的所有操作都是跨分区的,在存储管理部分,接触到的是数据块的概念,数据块是物理实体,分区是逻辑概念,在spark中,一个RDD的分区对应存储管理模块中的一个数据块,存储管理模块接触不到RDD的概念,数据块和分区之间的映射是通过名称上的约定实现的。spark为每个RDD在内部维护了独立的ID号,对于RDD的每个分区也有独立的索引号,因此找到ID号和索引号就能找到数据块。rdd_1_0 就是代表了rdd1的第0个分区的数据块。
3.spark的内存缓存是怎么做的?
RDD默认的存储方式是内存缓存,RDD的分区数据块在存储管理模块中是以数据块名字为key,数据块内容为value的哈希表,这样能够快速索引到数据,因为缓存也是存储在内存中,就是存取速度很快。JVM默认会将内存的60%来做缓存,如果超过了,spark会丢掉或者持久化到磁盘上,这些都依赖数据块的持久化选项。即便是直接删除掉,也可以错误恢复,通过依赖关系的可回溯性,如果祖先RDD没有损坏,那么可以回溯出来。如果祖先rdd不存在了,数据就无法回溯。
4.磁盘缓存
一个数据块对应着一个磁盘临时文件,临时文件的名字关系是通过数据块的名字通过哈希算法得到的,方便查找。
5.spark的rdd的持久化选项有哪些?
a.memory_only 只放在内存中,超出限制大小,直接删除
b.memory_and_disk 优先放到内存中,超过大小,缓存到磁盘上
c.memory_only_ser 以序列化的方式存储到内存中
d.memory_only_2 在内存中冗余备份一份
6.shuffle数据持久化
在spark任务执行过程中,一个map任务会根据reduce任务的数量创建出相应的桶,桶数量是M*R m中的一个会将数据分散到多个r中去,所以是m*r,与rdd持久化不同的是,shuffle数据的持久化都是缓存在磁盘上,一个桶就是一个数据块对应一个文件,一个数据块对应一个文件会导致文件很多,可以设置spark.shuffle.consolidateFiles为true 做文件合并,可以让多个map任务的shuffle公用同一个文件,从而减少文件数。
7.广播变量持久化
为加速对小块数据的读取,希望这些数据在所有节点上都有一份拷贝,无需远程获取。采取memory_and_disk方式存储。
- Spark的存储管理
- spark 存储管理
- Spark的存储管理
- Spark 存储管理之BlockManger
- Spark存储管理(读书笔记)
- Spark入门——4: Spark的存储管理模块
- Spark源码分析(六)存储管理1
- Spark源码分析(七)存储管理2
- 基于Alluxio系统的Spark DataFrame高效存储管理技术
- Spark的数据存储
- spark的数据存储
- Spark将数据压缩存储
- Spark存储体系
- 存储管理
- 存储管理
- 存储管理
- 存储管理
- 存储管理
- 树莓派3B 内核模块编译
- C++
- 设计模式-策略模式
- Js操作cookie的函数,来自jquery
- 熵权法(循环求解)
- spark 存储管理
- Android自定义TextView闪烁文字的效果
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
- 练习
- Linux内核中断机制(二):异常向量表建立
- 【WC2015模拟2.6】Circle
- linux之路由知识之ip route 命令中的疑惑
- poj 3368 Frequent values
- 使用SublimeText 作为Python 的开发环境