介绍Spark中的存储体系
整体介绍
BlockManagerMaster
: 代理BlockManager
与Driver上的BlockManagerMasterEndpoint
通信。如图序号1和2所示,Driver和Executor上的BlockManager
通过Driver上的BlockManagerMasterEndpoint
通信。BlockManagerMaster
之所以能够和BlockManagerMasterEndpoint
通信,是因为它持有了BlockManagerMasterEndpoint
的RpcEndpointRef
BlockManagerMasterEndpoint
: 由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://masterwangzx.com/2020/09/07/store-overview/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)