《循序渐进学Spark》一 3.3 Spark存储与I/O

简介:

本节书摘来自华章出版社《循序渐进学Spark》一书中的第3章,第3.3节,作者 小象学院 杨 磊,更多章节内容可以访问云栖社区“华章计算机”公众号查看。



3.3 Spark存储与I/O

前面已经讲过,RDD是按照partition分区划分的,所以RDD可以看作由一些分布在不同节点上的分区组成。由于partition分区与数据块是一一对应的,所以RDD中保存了partitionID与物理数据块之间的映射。物理数据块并非都保存在磁盘上,也有可能保存在内存中。

3.3.1 Spark存储系统概览

Spark I/O机制可以分为两个层次:

1)通信层:用于Master与Slave之间传递控制指令、状态等信息,通信层在架构上也采用Master-Slave结构。

2)存储层:同于保存数据块到内存、磁盘,或远端复制数据块。

下面介绍几个Spark存储方面的功能模块。

1)BlockManager:Spark提供操作Storage的统一接口类。

2)BlockManagerMasterActor:Master创建,Slave利用该模块向Master传递信息。

3)BlockManagerSlaveActor:Slave创建,Master利用该模块向Slave节点传递控制命令,控制Slave节点对block的读写。

4)BlockManagerMaster: 管理Actor通信。

5)DiskStore:支持以文件方式读写的方式操作block。

6)MemoryStore: 支持内存中的block读写。

7)BlockManagerWorker: 对远端异步传输进行管理。

8)ConnectionManager:支持本地节点与远端节点数据block的传输。

图3-8概要性地揭示了Spark存储系统各个主要模块之间的通信。

b0ebbe0a62905ac846c57d6f9bbb281bfc0c7f85

图3-8 Spark存储系统概览

3.3.2 BlockManager中的通信

存储系统的通信仍然类似Master-Slave架构,节点之间传递命令与状态。总体而言,Master向Slave传递命令,Slave向Master传递信息和状态。这些Master与Slave节点之间的信息传递通过Actor对象实现(关于Actor的详细功能会在下一节Spark通信机制中讲述)。但在BlockManager中略有不同,下面分别讲述。

1)Master节点上的BlockManagerMaster包含内容如下:

①BlockManagerMasterActor的Actor引用。

②BlockManagerSlaveActor的Ref引用。

2)Slave节点上的BlockManagerMaster包含内容如下:

①BlockManagerMasterActor的Ref引用。

②BlockManagerSlaveActor的Actor引用。

其中,在Ref与Actor之间的通信由BlockManagerMasterActor和BlockManagerSlave-Actor完成。这个部分相关的源码篇幅较多,此处省略,感兴趣的读者请自行研究。

相关文章
7月31日Spark钉钉群直播【Apache Spark 在存储计算分离趋势下的数据缓存】
在数据上云的大背景下,存储计算分离逐渐成为了大数据处理的一大趋势,计算引擎需要通过网络读写远端的数据,很多情况下 IO 成为了整个计算任务的瓶颈,因而数据缓存成为此类场景下的一个重要的优化手段。本次分享将介绍 Spark 在数据缓存上的一些做法,并将介绍 EMR 自研的 Jindo 存储系统在数据缓存上的应用。
|
存储 分布式计算 大数据
Spark in action on Kubernetes - 存储篇(一)
在上篇文章中,我们分析了Spark Operator内部的机制,今天我们会讨论一个在大数据领域中最重要的话题 - 存储。大数据已经无声无息的融入了每个人的生活中。大到旅游买房,小到外卖打车,都可以看到通过大数据提供数据分析、数据推荐、数据决策的使用场景。
3584 0
|
存储 分布式计算 Scala
Apache Spark源码走读(六)Task运行期之函数调用关系分析 &存储子系统分析
本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何返回;以及对存储子系统进行分析 。
2615 0
|
4月前
|
机器学习/深度学习 SQL 分布式计算
Apache Spark 的基本概念和在大数据分析中的应用
介绍 Apache Spark 的基本概念和在大数据分析中的应用
162 0
|
26天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
4月前
|
机器学习/深度学习 SQL 分布式计算
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
|
9天前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
|
14天前
|
分布式计算 大数据 数据处理
[AIGC大数据基础] Spark 入门
[AIGC大数据基础] Spark 入门
141 0
|
3月前
|
分布式计算 大数据 Java
Spark 大数据实战:基于 RDD 的大数据处理分析
Spark 大数据实战:基于 RDD 的大数据处理分析
134 0