38 Sparkcore中的BlockManager

2023-12-20 15:08
文章标签 38 sparkcore blockmanager

本文主要是介绍38 Sparkcore中的BlockManager,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主要内容:

1.     BlockManager 运行实例

2.     BlockManager 原理流程图



37中的回顾:

首先讲解了Task内部具体执行的流程;然后介绍了Driver是如何对Executor处理后的Task执行的结果进行进一步的处理的。

从上一讲的内容可以看出在Shuffle过程中要读写数据(即上一个Stage的数据)时需要BlockManager的参与,因此为了了解Spark中程序的运行,掌握BlockManager部分的处理流程及方法十分重要。


一、BlockManager 运行实例

       首先,这里通过实例来讲解BlockManger的运行过程。

       当我们运行了Spark-shell时,可以从web控制台看见如下内容:

图38-1 web控制台信息

       从图中可以发现Job的调度模式为FIFO,这是为了确保当前程序最快速最稳定的执行完成。

       下面我们来看看日志信息:

         图38-2 日志信息

1.注册BlockMangerMaster和MapOutputTracker

在Application启动时会实例化SparkContext(SparkEnv),并在其中注册Blockmanager以及MapOutputTracker。其中:

(1)  BlockManagerMaster

对整个集群的Block数据进行管理,Block是Spark处理数据的基本单位,其与数据存储在哪里无关。具体注册过程见下列代码:

 

(2)  MspOutputTakerMaster

主要用于跟踪所有的Mapper的输出的。

图38-3日志信息2

2. BlockManagerMasterEndpoint注册与管理

       其本身是一个消息循环体,会负责通过远程消息通信的方式去管理所有的节点的BlockManager。

构造BlockmangerMaster时,其内部有个成员是BlockManagerMasterEndpoint。

 BlockManagerMasterEndpoint是BlcokManagerMaster的一个成员,在BlockManagerMaster实例化时产生,并开始接收其他BlcokManager向它发送注册信息。

3.注册BlockManager

       首先来看下相关日志信息:

         图38-4日志信息3

每次启动一个ExecutorBackend都会实例化BlockManager,并通过远程通信的方式注册给BlockManagerMaster;但是实质上是Executor中的BlockManager在启动的时候注册给了Driver上的BlockManagerMasterEndpoint。

?这里的BlockManagerMaster需要做HA吗?

首先,BlockManagerMaster是Driver中一个普通的对象,在集群运行的时候,我们一般无法对一个对象作HA,但可以对进程作HA。那么,我们可以让Driver运行在集群中(集群模式)。这时,可以指定Supervise关键字,通过spark-submit启动Application。当Driver挂掉时,Master就可以将Driver恢复。

补充:与BlockManager相关的对象

         (1)MemoryStore

                   是BlockManager中专门负责内存数据存储和读写的类。

         (2)DiskStore

                   是BlockManager中专门负责基于磁盘的数据存储和读写的类。

        BlockManager最重要的功能是存取数据块是由get和put这两个方法实现的。(可以分为远程的get/put和远程的get/put,BlockManager可以基于MemoryStore、DiskStore或者OffHeap(Tachyon Store))

(3)DiskBlockManager

  管理logical Block与磁盘上的physical Block之间的映射关系并负责磁盘的文件的创建、读写等。

其实现代码如下:

 

二、从作业运行的角度来观察BlockManager

 1.广播(BroadCast)

    首先,在程序启动开始需要进行广播(包括一些广播变量,主要是一些在内存中已有的数据),这里的广播是在内存中进行的。所以就需要调用MemoryStore,并通过MomeryStore来存储广播变量。

   可以为了更好的理解这一步操作,我们可以通过日志及源码来进一步详细了解。

图38-5日志信息4

 

2.Driver管理BlockManager

       在Driver中通过BlockManagerInfo来管理集群中每个ExecutorBackend中的BlockManager中的元数据信息。

 

BlockManagerInfo 其中有BlockManagerId(标明具体的BlockManger)。每个节点每启动一个ExecutorBackend都会相应的有(启动)一个BlockManager。这里的SlaveEndpoint用于BlockManagerMaster与Slave节点上的BlockManager进行通信的。

3.更新BlockManagerInfo信息

       当改变了具体的ExecutorBackend上的Block信息后,就必须发消息给Driver中的BlockManagerMaster来更新相应的BlockManagerInfo的信息;

Stage提交TaskSet会想利用MemoryStore存储广播变量。进而更新BlockManagerInfo。

4.从Driver中读取Block信息

       当执行第二个Stage时,第二个Stage会向Driver中的MapOutputTrackerMasterEndpoint发消息会向Driver中的MapOutputTrackerMasterEndpoint发消息,请求上一个Stage中相应的输出。此时MapOutputTrackerMaster会把上一个Stage的输出数据的元数据信息发送给当前请求的Stage;

图38-5日志信息5 shuffle日志

?BlockManager与Yarn中nodeManager的区别:

Yarn中的nodeManager管理的是当前节点的CUP与内存资源的,它是管理物理硬件资源;

BlockManager管理的是以Block为基础的数据,它是管理数据的。

 

 

三、BlockManager运行原理图

 

 

 


__________________________________EOF_______________________________________________

 

 

 

这篇关于38 Sparkcore中的BlockManager的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/516469

相关文章

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

leetcode#38. Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following: 1. 12. 113. 214. 12115. 111221 1 is read off as “one 1” or 11. 11 is read off

2024国赛数学建模B题完整分析参考论文38页(含模型和可运行代码)

2024 高教社杯全国大学生数学建模完整分析参考论文 B 题 生产过程中的决策问题 目录 摘要 一、问题重述 二、问题分析 三、 模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1样例代码(仅供参考) 4.1.4问题1样例代码运行结果(仅供参考) 4.2问题2 4.2.1问题2思路分析 4.2.2问题2模

数据库系统 第38节 数据库备份

数据库备份是确保数据安全和完整性的重要手段。它涉及创建数据库的副本,以便在数据丢失或损坏的情况下可以恢复。数据库备份可以采取多种形式,包括完全备份、增量备份和差异备份。下面将详细说明每种备份类型,并提供相应的源代码示例。 1. 完全备份 完全备份是数据库的完整副本,包括所有数据和数据库对象(如表、索引、视图等)。这种备份通常用于初始备份或在长时间间隔后进行备份。 示例代码(Python):

Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》 目录 一、概述 二、垃圾收集器(garbage collector (GC)) 是什么? 三、为什么需要GC? 四、为什么需要多种GC? 五、对象存活的判断 六、垃圾回收算法 6.1 标记 -清除算法 6.2 复制算法 6.3 标记-整理算法 6.4 分代收集算法 七、垃圾收集器 7.1 Serial收集器

Spark学习之路 (十三)SparkCore的调优之资源调优JVM的基本架构

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》   目录 一、JVM的结构图 1.1 Java内存结构 1.2 如何通过参数来控制各区域的内存大小 1.3 控制参数 1.4 JVM和系统调用之间的关系 二、JVM各区域的作用 2.1 Java堆(Heap) 2.2 方法区(Method Area) 2.3 程序计数器(Program Counter R

Spark学习之路 (十二)SparkCore的调优之资源调优

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》 目录 一、概述 二、Spark作业基本运行原理 三、资源参数调优 3.1 num-executors 3.2 executor-memory 3.3 executor-cores 3.4 driver-memory 3.5 spark.default.parallelism 3.6 spark.storag

Spark学习之路 (十)SparkCore的调优之Shuffle调优

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》 目录 一、概述 二、shuffle的定义 三、ShuffleManager发展概述 四、HashShuffleManager的运行原理 4.1 未经优化的HashShuffleManager 4.2 优化后的HashShuffleManager 五、SortShuffleManager运行原理 5.1 普通

Spark学习之路 (九)SparkCore的调优之数据倾斜调优

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》 目录 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 某个task执行特别慢的情况 某个task莫名其妙内存溢出的情况 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数据 解决方案二:过滤少数导致倾斜的key 解决方案三:提

Spark学习之路 (八)SparkCore的调优之开发调优

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》 前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔