一、Spark存储系统
Spark存储系统,主要可以分为以下四个部分:块管理,块传输,磁盘存储,内存存储。
1、块管理
1.1 BlcokManagerMaster
存在于driver端。在创建SparkEnv的时候创建。
BlockManagerMaster主要用于对BlockManager进行统一的管理,主要负责发送消息。
1.2 BlockManager
即存在于driver端也存在于executor端。在创建SparkEnv的时候创建。
BlockManager主要负责对本地或远端节点上的内存、磁盘及堆外内存中Block的管理。
在创建BlockManager时,会将刚创建的BlockManagerMaster注册进BlockManager。
其内部管理者磁盘存储及内存存储的组件。
1.3 BlcokInfoManager
BlockInfoManager主要提供对BlockInfo的管理,及对Block锁的管理。
infos:负责存储BlockId和BlockInfo的映射关系。
writeLockByTask:负责存储任务尝试id与块写锁的映射关系。
readLocksByTask:负责存储任务尝试id与块读锁的映射关系。
2、磁盘存储
2.1 DiskBlockManager
为逻辑block与数据写入磁盘的位置之间建立逻辑的映射关系。
文件的一级目录为文件名hash值对一级目录总数取余。