目录:
- 1、BlockManagerMaster
- 2、BlockManager
- 3、MemoryStore
- 4、DiskStore
- 5、ConnectionManager
- 6、BlockManagerWoker
- 7、四个组件关系(总结)
1、BlockManagerMaster
1.1 存在位置:
Driver 中的 DAGscheduler上;
1.2 功能:
BlockManagerMaster负责管理每个节点上BlockManager的元信息,并进行维护,比如,Block的增删改查操作,都会在这里进行元数据的维护和修改。只有BlockManager执行了数据的增删改查的操作,那么必须将block的BlockStatus上报到BlockManagerMaster上,会对指定的BlockManager的BlockManagerInfo内部的BlockStatus进行增删改查,达到元数据的维护的功能。
2、BlockManager
2.1 存在位置:
某个节点上,注意:每个节点都有BlockManager。
2.2 构成组件:
BlockManager有四个关键的组件:DiskStore,MemoryStore,ConnectionManager,BlockManagerWorker。
2.3 作用:
其一是写数据, 使用 BlockManager 写数据时,RDD运行过程中的一些中间数据,或者手动指定了persist(),优先写入内存中,如果内存大小不够,会使用自己的算法,将内存中的部分数据写入磁盘。若使用persist方法还指定了replication,那么会使用BlockManagerWorker将数据replicate一份到其他节点的BlockManager上。其二是报活,每个BlockManager创建之后,就是向BlockManagerMaster上进行注册,此时BlockManagerMaster会为其创建对应的BlockManagerInfo。
3、MemoryStore
负责对内存中的数据进行读写;
4、DiskStore
负责对磁盘中的数据进行读写;
5、ConnectionManager
负责建立BlockManager到远程其他节点的BlockManager的网络连接;
6、BlockManagerWoker
负责对远程其他节点的BlockManager的数据读写。
7、四个组件关系(总结)
从BlockManager读取数据时,比如Shuffle read 操作,如果从本地读取数据,那么从MemoryStore 或者 DiskStore本地读取数据;如果本地没有数据,那么利用ConnectionManager 与有数据的BlockManager建立连接,然后使用BlockManagerWorker从远程BlockManager中读取数据。