美文网首页
[第十六章]BlockManager原理剖析

[第十六章]BlockManager原理剖析

作者: hoose | 来源:发表于2016-02-28 20:12 被阅读1069次

    在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原理剖析

          本文链接:https://www.haomeiwen.com/subject/cbqgkttx.html