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 条评论
登录 后参与评论

相关文章

来自专栏后端技术探索

Nginx从听说到学会(1.简介和对比)

没有听过Nginx?那么一定听过它的“同行”Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Unifo...

10630
来自专栏静晴轩

Npm vs Yarn 之备忘大全

有则笑话,如此讲到:“老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成。我嘴一抽,来了句:...

32790
来自专栏FreeBuf

神话传奇:一款通过卖号在微信群传播的远控木马

近期,360安全卫士监测到了一批通过微信群传播的远控木马,木马针对在网上倒卖微信号的人群定向投放。卖号人的交流群里时常有不同的小号在散播诱导性的木马程序,不知情...

28140
来自专栏牛肉圆粉不加葱

Spark Storage ① - Spark Storage 模块整体架构

Storage 模块在整个 Spark 中扮演着重要的角色,管理着 Spark Application 在运行过程中产生的各种数据,包括基于磁盘和内存的,比如 ...

8720
来自专栏PingCAP的专栏

TiDB 1.1 Beta Release

2018 年 2 月 24 日,TiDB 发布 1.1 Beta 版。该版本在 1.1 Alpha 版的基础上,对 MySQL 兼容性、系统稳定性做了很多改进。

31360
来自专栏Spark学习技巧

Flink与Spark Streaming在与kafka结合的区别!

本文主要是想聊聊flink与kafka结合。当然,单纯的介绍flink与kafka的结合呢,比较单调,也没有可对比性,所以的准备顺便帮大家简单回顾一下Spark...

33020
来自专栏Spark学习技巧

论Spark Streaming的数据可靠性和一致性

摘要:Spark Streaming自发布起就得到了广泛的关注,然而作为一个年轻的项目,需要提升的地方同样很多,比如1.2之前版本driver挂掉可能会丢失数据...

29380
来自专栏大宽宽的碎碎念

数据库事务、隔离级别和锁ACID的真实含义隔离级别和并发控制MySQL和PostgreSQL对比如何写代码

605120
来自专栏张善友的专栏

Service Bus for Windows server

Microsoft最近公开发布了Service Bus 1.0,该Service Bus可以免费地使用于具有适当license的Windows服务器上,这使得W...

199100
来自专栏嵌入式程序猿

飞思卡尔MCU 增强型DMA简介

DMA简介 直接内存存取(DMA)是快速数据交换的重要技术,它具有独立于CPU的后台批量数据传输能力,能够满足处理中高速数据传输要求,随着技术的发展,现在大部分...

39160

扫码关注云+社区

领取腾讯云代金券