BlockManager是分布式块存储管理。核心机制是每个节点存储自己的内存空间和磁盘空间。BlockManagerMaster负责与其他节点的BlockManager通信并负责块在节点间的复制。BlockInfoManager负责管理块的元数据并提供读写锁的功能。当从本地的BlockManager获取不到块时,从远程节点Fetch这个块。
Broadcast也是运用了BlockManager来存储广播变量,广播变量不需要通过锁的机制,参见源码这里不单独指出。
四大BlockManager组件:
名称 | 说明 |
BlockManagerMaster | BlockManager的主节点,所有的Block请求消息都是从这里发出。 |
BlockManagerMasterEndPoint | 主节点的BlockManager的Endpoint,负责解释slave发送来的块消息请求 |
BlockManagerSlaveEndPoint | 负责slave节点的块请求消息处理,处理master发来的Block消息。master保存注册过来的多个slaveEndpoint。所有的BlockInfo更新都要通知给master。 |
BlockManager | 在每个节点上运行Blockmanager。 通过BlockManagerMaster来实现块的复制。 通过BlockInfoManager读写块的元数据;通过MemoryStore和DiskStore实现块数据的存储读写。 |
BlockInfoManager | 管理BlockInfo数组,加上读写锁的控制。主要为BlockManager服务。 |