BlockManagerMaster 和 BlockManager 的过程和源码分析

liang @ 2018年05月23日

块管理器BlockManager是Spark存储体系的核心组件。Spark围绕着BlockManager构建了存储模块,包括RDD, Shuffle, Broadcast的存储都使用了BlockManager。Driver Application和Executor都会创建BlockManager,而Driver Appliction还会创建一个BlockManagerMaster负责所有节点上(Driver和Executors)的BlockManager之间的通信协调和管理。

BlockManager位于org.apache.spark.storage中,包含四个重要的组件: DiskStore,MemoryStore,Blocktransferservice, ConnectionManager。

DiskStore: 负责对磁盘上的数据读写。
MemoryStore: 负责内存数据的读写。
ConnectionManager: 负责到远程节点的连接。
BlockManagerWorker: 负责读写远程节点的数据。
当BlockManager启动创建后会向BlockManagerMaster注册,其中BlockManagerMaster位于Driver上,管理者数据的元数据,比如包含了BlockManagerInfo、BlockStatus,当BlockManagerMaster进行了增删改操作,BlockManager会通知BlockManagerMaster,BlockManagerMaster通过BlockManagerInfo内的BlockStatus进行元数据的操作。