专栏首页简单聊聊SparkSpark内核分析之BlockManager工作原理介绍

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

        最近一直在忙,没顾得上写文章,新年的第一篇文章,希望大家可以喜欢;好了,今天接着之前的内容,来聊聊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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spark性能调优篇三之广播方式传输数据

            接着之前的Spark调优系列文章,我们今天介绍一下通过广播的方式优化我们的Spark作业运行效率。在介绍文章之前,我们首先来分析一下我们Spar...

    z小赵
  • kafka系列第5篇:一文读懂消费者背后的那点"猫腻"

    经过前几篇文章的介绍,大致了解了生产者背后的运行原理。消息有生产就得有人去消费,今天我们就来介绍下消费端消费消息背后发生的那点事儿。

    z小赵
  • Kafka系列第6篇:消息是如何在服务端存储与读取的,你真的知道吗?

    经过前 5 篇文章的介绍,估么着小伙伴们已经对消息生产和消费的流程应该有一个比较清晰的认识了。当然小伙伴们肯定也比较好奇,Kafka 能够处理千万级消息,那它的...

    z小赵
  • python apscheduler

    apscheduler分为4个模块,分别是Triggers,Job stores,Executors,Schedulers.

    onety码生
  • 开源有限元框架 FEniCS

    和deal.ii一样,安装过程同样很麻烦,也需要装个虚拟机,安装Ubuntu、再安装 FEniCS,看来很多开源的计算软件还是偏重爱LINUX。

    fem178
  • 《天天爱消除》服务器性能优化

    《天天爱消除》服务器已经在外网稳定运行四年多了,日积月累服务器方面出现了一些问题。主要包括内存,强校验性能,异步开发效率,登录等问题。本文记录这些问题的解决方案...

    范蠡
  • Java面试手册:AJAX

    Ajax的工作原理相当于在客户端和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给A...

    南风
  • dubbo SpringContainer

    如果直接使用SpringContainer 则需要把相应的配置文件放到相应的位置,SpringContainer使用common log,

    WindWant
  • Android内容服务ContentService原理浅析ContentService启动跟实质注册观察者流程通知流程总结

    ContentService可以看做Android中一个系统级别的消息中心,可以说搭建了一个系统级的观察者模型,APP可以向消息中心注册观察者,选择订阅自己关心...

    看书的小蜗牛
  • 修改hexo生成的文件链接及图片资源链接

    hexo 默认配置里的文章链接是 :year/:month/:day/:title 这种url看起来很乱,对搜索引擎的爬取或者收录非常不友好,现在开始更改配置文...

    caoayu

扫码关注云+社区

领取腾讯云代金券