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的内存缓存