Spark内核源码深度剖析(10) -BlockManger 原理分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/86175716

1 BlockManager 原理分析

在这里插入图片描述

  • Driver 上,有 BlockManagerMaster,他的功能就是负责对各个节点上的BlockManager内部管理的数据的元数据进行维护,比如 block 增删改查等操作,都会在这里维护元数据的变更。
  • 每个节点都有 BlockManager, 它的几个关键组件,DiskStore,负责对磁盘上的额数据进行读写;MemoryStore,负责对内存中的数据进行读写;ConnectionManager,负责建立 BlockManager到远程其他节点的 BlockManager 的网络连接;BlockManagerWorker,负责对远程其他节点的 BlockManager 的数据读写;
  • 使用 BlockManager 进行读写操作时,比如,RDD运行过程中的一些中间数据,或者用户手动指定了 persist(),优先将数据写入内存。如果内存大小不够,会使用自己的算法,将内存中的部分数据写入磁盘。
  • 如果 persist() 指定了要 replica ,会使用 BlockManagerWorker 将数据 replicate 一份到其他节点的 BlockManager;
  • BlockManager 读取数据时,比如说 ShuffleRead操作。如果能从本地读取数据,那么会用 ConnectionManager与 有数据的 BlockManager建立连接,然后用 BlockManagerWorker 从远程BlockManager读取数据

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/86175716