Spark 之 BlockManager 原理分析

目录:

  • 1、BlockManagerMaster
  • 2、BlockManager
  • 3、MemoryStore
  • 4、DiskStore
  • 5、ConnectionManager
  • 6、BlockManagerWoker
  • 7、四个组件关系(总结)

1、BlockManagerMaster

1.1 存在位置:

Driver 中的 DAGscheduler上;

1.2 功能:

BlockManagerMaster负责管理每个节点上BlockManager的元信息,并进行维护,比如,Block的增删改查操作,都会在这里进行元数据的维护和修改。只有BlockManager执行了数据的增删改查的操作,那么必须将block的BlockStatus上报到BlockManagerMaster上,会对指定的BlockManager的BlockManagerInfo内部的BlockStatus进行增删改查,达到元数据的维护的功能。

2、BlockManager

2.1 存在位置:

某个节点上,注意:每个节点都有BlockManager。

2.2 构成组件:

BlockManager有四个关键的组件:DiskStore,MemoryStore,ConnectionManager,BlockManagerWorker。

2.3 作用:

其一是写数据, 使用 BlockManager 写数据时,RDD运行过程中的一些中间数据,或者手动指定了persist(),优先写入内存中,如果内存大小不够,会使用自己的算法,将内存中的部分数据写入磁盘。若使用persist方法还指定了replication,那么会使用BlockManagerWorker将数据replicate一份到其他节点的BlockManager上。其二是报活,每个BlockManager创建之后,就是向BlockManagerMaster上进行注册,此时BlockManagerMaster会为其创建对应的BlockManagerInfo。

3、MemoryStore

负责对内存中的数据进行读写;

4、DiskStore

负责对磁盘中的数据进行读写;

5、ConnectionManager

负责建立BlockManager到远程其他节点的BlockManager的网络连接;

6、BlockManagerWoker

负责对远程其他节点的BlockManager的数据读写。

7、四个组件关系(总结)

从BlockManager读取数据时,比如Shuffle read 操作,如果从本地读取数据,那么从MemoryStore 或者 DiskStore本地读取数据;如果本地没有数据,那么利用ConnectionManager 与有数据的BlockManager建立连接,然后使用BlockManagerWorker从远程BlockManager中读取数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值