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

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存储系统各个主要模块之间的通信。

图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完成。这个部分相关的源码篇幅较多,此处省略,感兴趣的读者请自行研究。

时间: 2024-10-26 20:06:29

《循序渐进学Spark》一 3.3 Spark存储与I/O的相关文章

《循序渐进学Spark 》Spark 编程模型

本节书摘来自华章出版社<循序渐进学Spark >一书中的第1章,第3节,作者 小象学院 杨 磊,更多章节内容可以访问"华章计算机"公众号查看. Spark机制原理 本书前面几章分别介绍了Spark的生态系统.Spark运行模式及Spark的核心概念RDD和基本算子操作等重要基础知识.本章重点讲解Spark的主要机制原理,因为这是Spark程序得以高效执行的核心.本章先从Application.job.stage和task等层次阐述Spark的调度逻辑,并且介绍FIFO.FA

《循序渐进学Spark》一第2章

 本节书摘来自华章出版社<循序渐进学Spark>一书中的第2章,第2.1节,作者 小象学院 杨 磊,更多章节内容可以访问"华章计算机"公众号查看. 第2章 Spark 编程模型 与Hadoop相比,Spark最初为提升性能而诞生.Spark是Hadoop MapReduce的演化和改进,并兼容了一些数据库的基本思想,可以说,Spark一开始就站在Hadoop与数据库这两个巨人的肩膀上.同时,Spark依靠Scala强大的函数式编程Actor通信模式.闭包.容器.泛型,并借助

《循序渐进学Spark》一2.3 Spark算子

 本节书摘来自华章出版社<循序渐进学Spark>一书中的第2章,第2.3节,作者 小象学院 杨 磊,更多章节内容可以访问"华章计算机"公众号查看. 2.3 Spark算子 本节介绍Spark算子的分类及其功能. 2.3.1 算子简介 Spark应用程序的本质,无非是把需要处理的数据转换为RDD,然后将RDD通过一系列变换(transformation)和操作(action)得到结果,简单来说,这些变换和操作即为算子. Spark支持的主要算子如图2-4所示. 根据所处理的数

《循序渐进学Spark》一第3章

第3章 Spark机制原理 本书前面几章分别介绍了Spark的生态系统.Spark运行模式及Spark的核心概念RDD和基本算子操作等重要基础知识.本章重点讲解Spark的主要机制原理,因为这是Spark程序得以高效执行的核心.本章先从Application.job.stage和task等层次阐述Spark的调度逻辑,并且介绍FIFO.FAIR等经典算法,然后对Spark的重要组成模块:I/O与通信控制模块.容错模块及Shuffle模块做了深入的阐述.其中,在Spark I/O模块中,数据以数据

《循序渐进学Spark》一导读

Preface 前 言 Spark诞生于美国加州大学伯克利分校AMP实验室.随着大数据技术在互联网.金融等领域的突破式进展,Spark在近些年得到更为广泛的应用.这是一个核心贡献者超过一半为华人的大数据平台开源项目,且正处于飞速发展.快速成熟的阶段. 为什么写这本书 Spark已经成为大数据计算.分析领域新的热点和发展方向.相对于Hadoop传统的MapReduce计算模型,Spark提供更为高效的计算框架以及更为丰富的功能,因此在大数据生产应用领域中不断攻城略地,势如破竹. 与企业不断涌现的对

《循序渐进学Spark 》Spark架构与集群环境

Spark架构与集群环境 本章首先介绍Spark大数据处理框架的基本概念,然后介绍Spark生态系统的主要组成部分,包括Spark SQL.Spark Streaming.MLlib和GraphX,接着简要描述了Spark的架构,便于读者认识和把握,最后描述了Spark集群环境搭建及Spark开发环境的构建方法. 1.1 Spark概述与架构 随着互联网规模的爆发式增长,不断增加的数据量要求应用程序能够延伸到更大的集群中去计算.与单台机器计算不同,集群计算引发了几个关键问题,如集群计算资源的共享

《循序渐进学Spark 》导读

目 录 前 言 第1章 Spark架构与集群环境    1.1 Spark概述与架构     1.1.1 Spark概述     1.1.2 Spark生态     1.1.3 Spark架构     1.2 在Linux集群上部署Spark     1.2.1 安装OpenJDK     1.2.2 安装Scala     1.2.3 配置SSH免密码登录     1.2.4 Hadoop的安装配置     1.2.5 Spark的安装部署     1.2.6 Hadoop与Spark的集群复

《循序渐进学Spark》一第1章

第1章 Spark架构与集群环境 本章首先介绍Spark大数据处理框架的基本概念,然后介绍Spark生态系统的主要组成部分,包括Spark SQL.Spark Streaming.MLlib和GraphX,接着简要描述了Spark的架构,便于读者认识和把握,最后描述了Spark集群环境搭建及Spark开发环境的构建方法. 1.1 Spark概述与架构 随着互联网规模的爆发式增长,不断增加的数据量要求应用程序能够延伸到更大的集群中去计算.与单台机器计算不同,集群计算引发了几个关键问题,如集群计算资

满满的技术干货!Spark顶级会议Apache Spark Summit精华讲义分享

Apache Spark Summit是Spark技术的顶级会议,这里大咖云集,一同探讨世界上最新的Spark发展动态以及产品应用和技术实践. 讲义资料持续更新中... 2月20日更新 [Spark Summit East 2017]工程快速索引[Spark Summit East 2017]提升Python与Spark的性能和互操作性[Spark Summit East 2017]Spark中的容错:从生产实践中获取的经验[Spark Summit East 2017]Spark:将数据科学作

Spark Streaming场景应用- Spark Streaming计算模型及监控

Spark Streaming是一套优秀的实时计算框架.其良好的可扩展性.高吞吐量以及容错机制能够满足我们很多的场景应用.本篇结合我们的应用场景,介结我们在使用Spark Streaming方面的技术架构,并着重讲解Spark Streaming两种计算模型,无状态和状态计算模型以及该两种模型的注意事项;接着介绍了Spark Streaming在监控方面所做的一些事情,最后总结了Spark Streaming的优缺点. 一.概述 数据是非常宝贵的资源,对各级企事业单均有非常高的价值.但是数据的爆