一、概述
根据《深入理解Spark:核心思想与源码分析》一书,结合最新的spark源代码master分支进行源码阅读,对新版本的代码加上自己的一些理解,如有错误,希望指出。
1.块管理器BlockManager的实现
块管理器是Spark存储体系的核心组件,Driver Application和Executor都会创建BlockManager,源代码位置在core/org.apache.spark.storage,部分代码如下。
View Code
上面代码中声明的BlockInfoManager用于管理BlockManager缓存BlockId及对应的BlockInfo,BlockInfoManager提供一些列的同步读写策略。BlockManager由以下部分组成。
1)shuffle客户端shuffleClient;
2)BlockManagerMaster,对存在于所有Executor上的BlockManager进行统一管理;
3)磁盘块管理器DiskBlockManager;
4)内存存储MemoryStore;