WZX's blog 海滩上捡贝壳的孩子

Spark源码阅读(六):存储体系总览

2020-09-07
wzx

介绍Spark中的存储体系

整体介绍

  • BlockManagerMaster: 代理BlockManager与Driver上的BlockManagerMasterEndpoint通信。如图序号1和2所示,Driver和Executor上的BlockManager通过Driver上的BlockManagerMasterEndpoint通信。BlockManagerMaster之所以能够和BlockManagerMasterEndpoint通信,是因为它持有了BlockManagerMasterEndpointRpcEndpointRef

  • BlockManagerMasterEndpoint: 由Driver上的SparkEnv负责创建和注册到Driver的RpcEnv中。主要对各个节点上的BlockManagerBlockManager与Executor的映射关系及block位置信息(即block所在的BlockManager)等进行管理。

  • BlockManagerSlaveEndpoint: 每个Executor或Driver的SparkEnv中都有属于自己的BlockManagerSlaveEndpoint,分别由各自的SparkEnv负责创建和注册到各自的RpcEnv中。各自BlockManagerslaveEndpoint属性持有各自BlockManagerSlaveEndpointRpcEndpointRef如图序号3和4所示,用于接收BlockManagerMasterEndpoint的命令,如删除block、获取block状态、获取匹配的BlockId

  • MemoryManager: 内存管理器。负责对单个节点上内存的分配与回收。

  • BlockTransferService: block传输服务主要用于不同阶段的任务之间的lock数据的传输与读写。如图序号5和6所示,Executor或者Driver上的shuffleClient通过远端的BlockTransferService提供的服务上传和下载Block。

  • DiskBlockManager: 磁盘block管理器。对磁盘上的文件及目录的读写操作进行管理

  • BlockInfoManagerblock信息管理器。负责对block的元数据及锁资源进行管理

  • MemoryStore内存存储。依赖于MemoryManager,负责对block的内存存储

  • DiskStore磁盘存储。依赖于DiskBlockManager,负责对block的磁盘存储

REFERENCE

  1. Spark内核设计的艺术:架构设计与实现

Similar Posts

Comments