介绍Spark中的存储体系
整体介绍

BlockManagerMaster: 代理BlockManager与Driver上的BlockManagerMasterEndpoint通信。如图序号1和2所示,Driver和Executor上的BlockManager通过Driver上的BlockManagerMasterEndpoint通信。BlockManagerMaster之所以能够和BlockManagerMasterEndpoint通信,是因为它持有了BlockManagerMasterEndpoint的RpcEndpointRefBlockManagerMasterEndpoint: 由Driver上的SparkEnv负责创建和注册到Driver的RpcEnv中。主要对各个节点上的BlockManager、BlockManager与Executor的映射关系及block位置信息(即block所在的BlockManager)等进行管理。BlockManagerSlaveEndpoint: 每个Executor或Driver的SparkEnv中都有属于自己的BlockManagerSlaveEndpoint,分别由各自的SparkEnv负责创建和注册到各自的RpcEnv中。各自BlockManager的slaveEndpoint属性持有各自BlockManagerSlaveEndpoint的RpcEndpointRef。如图序号3和4所示,用于接收BlockManagerMasterEndpoint的命令,如删除block、获取block状态、获取匹配的BlockId等。MemoryManager: 内存管理器。负责对单个节点上内存的分配与回收。BlockTransferService: block传输服务。主要用于不同阶段的任务之间的lock数据的传输与读写。如图序号5和6所示,Executor或者Driver上的shuffleClient通过远端的BlockTransferService提供的服务上传和下载Block。DiskBlockManager: 磁盘block管理器。对磁盘上的文件及目录的读写操作进行管理。BlockInfoManager:block信息管理器。负责对block的元数据及锁资源进行管理。MemoryStore:内存存储。依赖于MemoryManager,负责对block的内存存储。DiskStore:磁盘存储。依赖于DiskBlockManager,负责对block的磁盘存储。
REFERENCE
- Spark内核设计的艺术:架构设计与实现
文档信息
- 本文作者:wzx
- 本文链接:https://wzx140.github.io//2020/09/07/store-overview/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)