乐趣区

关于spark:Spark的分布式存储系统BlockManager全解析

摘要:BlockManager 是 spark 中至关重要的一个组件,在 spark 的运行过程中到处都有 BlockManager 的身影,只有搞清楚 BlockManager 的原理和机制,你能力更加深刻的了解 spark。

§ BlockManager 是什么?

  • BlockManager 的作用?我了解是负责做 RDD 的存储,如何存下来给后续工作去应用。
    其外部模块图如下:

  • 图中看到有个 memoryStore 和 DiskStore,阐明把 block 做存储时,有内存和磁盘 2 种形式,存储后就都 i 通过这个 Store 去治理。
  • 存储时以 Block 为单位,所以会有个映射用的数组
  • 有一个负责和 Driver 的 BlockManagerMaster 通信的援用接口
  • 还有个 shuffClient,负责做 备份 和 下载,即各 executor 之间会通过 shuffClient 来做 block 的传输。

§ BlockManager 和 Driver、executor 的关系

其关系如图:

从中能够看到

  1. blockManagerMaster 在 driver 端生成
  2. executor 中生成 blockManager,并负责向 BMM 注册。
  3. spark 中注册音讯通过 ActorSystem 进行发送

§ 把块 block 存入 blockManager 的流程

比方非凡的 2 个中央:

  1. 试图 put 时,会先看下该 blockId 是否有缓存,有的话间接取过去,否则就从新创立 blockInfo
  2. 存储时会先判断内存是否短缺,短缺就写入 memoryStore,如果不够会先开释再尝试放入。

§ 从 blockManager 中删除块

删除的操作没什么特地的,次要是会判断一下块的存储级别,抉择从不同的 store 中取块。

§ shuffClient 下载 block 操作

BMMAC 就是 BlockManagerMasterActor, 我当初瞎写的简称

  • 留神点:当要取的块来自好几个 BlockManager 时,把它打乱程序,防止好几个 BM 同时从某一个 BM 上下载数据!

§ shuffeClinet 的备份操作

  • BM 为什么要备份他的 block?书里作者没解释,我的了解是为了避免节点解体或者失落,导致两头工作无奈继续执行?
  • 因为其余的 BlockManager 能接管的 block 可能无限,所以备份时可能会波及多个 block,每次咱们一样,从 BMmaster 那里拿一个 随机 的 blockManager 做备份,防止都往同一个上备份。

§ BlockManager 和 Executor、driver 的关系:

从中能够看到

  1. blockManagerMaster 在 driver 端生成
  2. executor 中生成 blockManager,并负责向 BMM 注册。
  3. spark 中注册音讯通过 ActorSystem 进行发送

点击关注,第一工夫理解华为云陈腐技术~

退出移动版