前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark内核分析之BlockManager工作原理介绍

Spark内核分析之BlockManager工作原理介绍

作者头像
z小赵
发布2018-09-05 15:48:34
8590
发布2018-09-05 15:48:34
举报
文章被收录于专栏:简单聊聊Spark简单聊聊Spark

最近一直在忙,没顾得上写文章,新年的第一篇文章,希望大家可以喜欢;好了,今天接着之前的内容,来聊聊BlockManager的工作原理,上图来分析;

BlockManager原理图

        在DAGShceduler中有一个BlockManagerMaster对象,该对象的工作就是负责管理全局所有BlockManager的元数据,当集群中有BlockManager注册完成的时候,其会向BlockManagerMaster发送自己元数据信息;BlockManagerMaster会为BlockManager创建一个属于这个BlockManager的BlockManagerInfo,用于存放BlockManager的信息。

简单介绍一下BlockManager主要的几个组件;

DiskStore:负责磁盘存储 MemoryStore:负责内存存储 BlockManagerWorker:负责接收相关请求并执行任务 ConnectionManager:负责与其他BlockManager建立连接

下面我们来看看shuffle write和shuffle read的工作原理;

Shuffle Write工作原理

当Spark作业进行持久化或Shuffle等操作的时候,会出发BlockManager进行写操作;比如执行persist操作的时候,就会出发数据持久化的操作,数据会优先进入到内存,当内存不足,会将数据持久化到磁盘。此时如果指定了replicate,那么数据会通过BlockManagerWorker复制一份到其他节点上去。

Shuffle Read工作原理

当Spark作业的某个算子触发读取数据的操作,首先,会在该算子所在的BlockManager读取数据,如果本地没有数据,BlockManagerWorker会通知ConnectionManager,后者通过向其他BlockManager的ConnectionManager建立连接,然后本节点向建立连接的BlockManager节点拉取数据;当BlockManager的相关信息发生变化的时候,BlockManager会通过Actor向BlockManagerMaster发送改变信息,BlockManagerInfo内部的BlockStatus会相应地改变相应地状态。

总结:以上对BlockManager的工作原理做简单介绍,从而理清数据在各个算子之间是如何存储和传递的;由于源码比较庞大,所以请感兴趣的小伙伴们自行去研究相关源码;欢迎关注。

如需转载,请注明:

上一篇:Spark内核分析之DAGScheduler划分算法实现原理讲解(重要)

本篇:Spark内核分析之BlockManager工作原理介绍

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=18xfzdtzx7363

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档