版权声明:本文为博主原创文章,未经博主允许不得转载。 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
读取数据