微软OneNote客户预览版学习工具下载(暂未上线):教学好帮手
616
2022-05-29
首先最关键的模块就是Spark中的BlockManager。学习一下。
§ BlockManager是什么?
BlockManager的作用?我理解是负责做RDD的存储,如何存下来给后续任务去使用。
其内部模块图如下:
图中看到有个memoryStore和DiskStore,说明把block做存储时,有内存和磁盘2种方式,存储后就都i通过这个Store去管理。
存储时以Block为单位,所以会有个映射用的数组
有一个负责和Driver的BlockManagerMaster通信的引用接口
还有个shuffClient,负责做 备份 和 下载, 即各executor之间会通过shuffClient来做block的传输。
§ BlockManager和Driver、executor的关系
其关系如图:
从中可以看到
blockManagerMaster在driver端生成
executor中生成blockManager,并负责向BMM注册。
spark中注册消息通过ActorSystem进行发送
§ 把块block 存入blockManager的流程
比如特殊的2个地方:
试图put时,会先看下该blockId是否有缓存,有的话直接取过来,否则就重新创建blockInfo
存储时会先判断内存是否充足,充足就写入memoryStore,如果不够会先释放再尝试放入。
§ 从blockManager中删除块
删除的操作没什么特别的,主要是会判断一下块的存储级别,选择从不同的store中取块。
§ shuffClient 下载block操作
BMMAC就是BlockManagerMasterActor,我当初瞎写的简称
注意点:当要取的块来自好几个BlockManager时, 把它打乱顺序,避免好几个BM同时从某一个BM上下载数据!
§ shuffeClinet的备份操作
因为其他的BlockManager能接收的block可能有限,所以备份时可能会涉及多个block, 每次我们一样,从BMmaster那里拿一个 ***随机***的blockManager做备份,避免都往同一个上备份。
§ BlockManager和Executor、driver的关系:
从中可以看到
blockManagerMaster在driver端生成
executor中生成blockManager,并负责向BMM注册。
spark中注册消息通过ActorSystem进行发送
EI企业智能 智能数据 数据湖治理中心 DGC
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。