Spark 存储原理详细图解

Storage模块主要分为两层:

  1. 通信层:storage模块采用的是master-slave结构来实现通信层,master和slave之间传输控制信息、状态信息,这些都是通过通信层来实现的。
  2. 存储层:storage模块需要把数据存储到disk或是memory上面,有可能还需replicate远端,这都是由存储层来实现和提供相应接口。
  3. Storage模块提供了统一的操作类BlockManager,外部类与storage模块打交道都需要通过调用BlockManager相应接口来实现。
  4. Storage模块存取的最小单位是数据块(Block),Block与RDD中的Partition一一对应,所以所有的转换或动作操作最终都是对Block进行操作。

数据写入过程分析

  1. RDD的iterator调用CacheManager的getOrCompute函数
  2. CacheManager调用BlockManager的put接口来写入数据
  3. BlockManager根据输入的storageLevel来确定是写内存还是写硬盘
  4. 通知BlockManagerMaster有新的数据写入,在BlockManagerMaster中保存元数据
  5. 将写入的数据与其它slave worker进行同步(一般来说在本机写入的数据,都会另先一台机器来进行数据的备份,即replicanumber=1)

Spark 存储原理详细图解_第1张图片

你可能感兴趣的:(Spark生态核心技术)