[第十六章]BlockManager原理剖析

在Driver的DAGScheduler中还有一个很重要的对象BlockManagerMaster,它的功能,其实很简单,就是负责对各个节点 的BlockManager内部管理的数据的元数据,进行管理与维护,比如block的增删等操作,都会在这里维护变化的操作。

每个Worker中的blockManager在创建后的第一件事就是向Driver中的BlockManagerMaster进行注册 。此时在BlockManagerMaster内部里就会为这个blockManager创建一个BlockManagerInfo

每个BlockManager里面都包括四个组件:

1:DiskStore 负责对磁盘上的文件进行读写
2:MemoryStore 负责对内存上的文件进行读写
3:ConnectionManager 负责建立BlockManager到远程其他BlockManager的网络连接
4:BlockManagerWorker 负责对远程其他节点上BlockManager的数据的读写

使用BlockManager进行写操作时,比如说,在的RDD运行过程中的一些中间数据,或者我们手动指定了persist(),优先将数据写入内存,当内存大小不够时,会使用自己的算法,将内存中部分数据写入磁盘

此外,如果persist()指定了replicat,那么会使用BlockManagerWorker将数据复制一份到其他 节点的BlockManager上去。

从BlockManager读取数据时,比如我们上一章节说的Shuffle Reader操作时,如果能从本地读取数据,那么就利用DistStore,或者MemoryStore从磁盘或者内存中从本地读取数据。

但是如果本地没有数据,那么就会用CollectionManager于有数据的BlockManager进行连接,然后用BlockManagerWorker从远程BlockManager读取数据。

只要使用BlockManager执行了数据增删修改操作,那么必须将block的BlockMaster上报到BlockManaagerMaster上去,在BlockManagerMaster上,会指定BlockManagerMaster上的BlockManagerInfo里的BlockStatus,进行增删修改,从而达到对元数据的维护。

你可能感兴趣的:([第十六章]BlockManager原理剖析)