`
wangmengbk
  • 浏览: 292174 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spark 架构及运算逻辑

阅读更多

Spark的整体流程为:Client 提交应用,Master找到一个Worker启动Driver,Driver向Master或者资源管理器申请资源,之后将应用转化为RDD Graph,再由DAGScheduler将RDD Graph转化为Stage的有向无环图提交给TaskScheduler,由TaskScheduler提交任务给Executor执行。在任务执行的过程中,其他组件协同工作,确保整个应用顺利执行。

Spark架构采用了分布式计算中的Master-Slave模型。Master是对应集群中的含有Master进程的节点(ClusterManager),Slave是集群中含有Worker进程的节点。Master作为整个集群的控制器,负责整个集群的正常运行;Worker相当于是计算节点,接收主节点命令与进行状态汇报;Executor负责任务的执行;Client作为用户的客户端负责提交应用,Driver负责控制一个应用的执行,如图下图:



                                                                                 Spark 框架图

 

Spark集群部署后,需要在主节点和从节点分别启动Master进程和Worker进程,对整个集群进行控制。在一个Spark应用的执行过程中,Driver和Worker是两个重要角色。Driver 程序是应用逻辑执行的起点,负责作业的调度,即Task任务的分发,而多个Worker用来管理计算节点和创建Executor并行处理任务。在执行阶段,Driver会将Task和Task所依赖的file和jar序列化后传递给对应的Worker机器,同时Executor对相应数据分区的任务进行处理。

 

Spark的架构中的基本组件介绍:

ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。

Worker:从节点,负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。

Driver:运行Application的main()函数并创建SparkContext。

Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。

SparkContext:整个应用的上下文,控制应用的生命周期。

RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。

DAG Scheduler:实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。

TaskScheduler:将任务(Task)分发给Executor执行。

Stage:一个Spark作业一般包含一到多个Stage。

Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。

Transformations:转换(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。

Actions:操作(Actions) (如:count, collect, save等),Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。

SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。

SparkEnv内创建并包含如下一些重要组件的引用。

MapOutPutTracker:负责Shuffle元信息的存储。

BroadcastManager:负责广播变量的控制与元信息的存储。

BlockManager:负责存储管理、创建和查找块。

MetricsSystem:监控运行时性能指标信息。

SparkConf:负责存储配置信息。

 



                                                                       Spark运行逻辑图

 

在Spark应用中,整个执行流程在逻辑上会形成有向无环图(DAG)。Action算子触发之后,将所有累积的算子形成一个有向无环图,然后由调度器调度该图上的任务进行运算。Spark的调度方式与MapReduce有所不同。Spark根据RDD之间不同的依赖关系切分形成不同的阶段(Stage),一个阶段包含一系列函数执行流水线。图中的A、B、C、D、E、F分别代表不同的RDD,RDD内的方框代表分区。数据从HDFS输入Spark,形成RDD A和RDD C,RDD C上执行map操作,转换为RDD D, RDD B和 RDD E执行join操作,转换为F,而在B和E连接转化为F的过程中又会执行Shuffle,最后RDD F 通过函数saveAsSequenceFile输出并保存到HDFS或 Hbase中

 

  • 大小: 29.9 KB
  • 大小: 44 KB
分享到:
评论

相关推荐

    Spark Standalone架构设计.docx

    TaskSet 是基于 Stage 可以直接映射为 TaskSet,一个 TaskSet 封装了一次需要运算的、具有相同处理逻辑的 Task,这些 Task 可以并行计算,粗粒度的调度是以 TaskSet 为单位的。 在 Standalone 模式下,默认使用的是...

    spark大数据分析(3平台版本)

    本书首先介绍了Spark的基本架构和核心组件,包括Spark Core、Spark SQL、Spark Streaming、MLlib(机器学习库)以及GraphX(图计算)。这些组件的讲解不仅限于理论,还包含了大量实践案例,使得读者能够对Spark的...

    Hadoop Spark大数据巨量分析与机器学习整合开发实战 ,林大贵

    这部分内容会涉及到使用Hadoop的HDFS和MapReduce,以及Spark的RDD(弹性分布式数据集)、DataFrame、Dataset等数据结构和API来实现复杂的业务逻辑。 结合上述提到的技术点,本书可能还会介绍如何在Linux环境下搭建...

    Spark讲义(下)1

    Spark Streaming使用mini-batch的架构,把流式计算当作一系列连续的小规模批处理来对待。Spark Streaming从各种输入源中读取数据,并把数据分组为小的批次。新的批次按均匀的时间间隔创建出来。在每个时间区间开始的...

    彭渊-如何突破腾讯大数据分析架构瓶颈-发布版.pdf

    - **Spark Streaming**:基于Apache Spark生态,Spark Streaming提供了更高级别的抽象接口,支持复杂的数据流处理逻辑,但在处理低延迟数据时仍有一定局限性。 - **Flink**:Flink是近年来发展迅速的一个分布式流...

    大数据技术Hadoop+Spark-hadoop和spark

    - **定义**:MapReduce是一种分布式计算框架,通过将用户自定义的业务逻辑代码与自带组件结合,形成完整的分布式运算程序,在Hadoop集群上运行。 - **优点**: - 易于编程:提供简单直观的编程接口。 - 扩展性强:...

    基于Spark的分布式大数据分析算法研究.pdf

    总结来说,本研究基于Spark的分布式大数据分析算法,针对大数据时代的挑战,设计了支持并行运算规则的分布式大数据处理算法,通过结合Spark生态系统的多个组件,实现了对大型实时数据流的高效处理。这种算法在处理大...

    一种基于Spark的大规模语义数据分布式推理框架.pdf

    MapReduce是一种编程模型,用于处理大规模数据集的并行运算,它是Hadoop的核心组件之一。Hadoop是一个开源的分布式存储和计算平台,能够处理PB级别的数据。Mesos是一个分布式资源管理器,可以在集群中协调和管理计算...

    基于Spark的分布式并行推理算法.pdf

    分布式推理指的是在分布式系统中对信息进行逻辑推理的过程,这种推理能够有效处理大数据量,同时保证推理的准确性。 本文中提到的MapReduce是一种编程模型,用于在大数据集上执行并行运算,它将数据处理分为Map...

    2022年大数据可视化平台产品背景下的IT基础架构创新方案-数字化转型时代下的IT基础架构创新方案完.pptx

    Hadoop通过其分布式文件系统HDFS保证了数据的高容错性和扩展性,而Spark则以其内存计算特性显著提升了数据处理速度,使得整体运算速度相比传统方法提升了1000倍。这种底层架构的结合,使得企业在处理大规模数据时能...

    智能流计算Flink_Spark在华为云CloudStream中的应用实践-时金魁1

    流计算是一种实时处理正在发生的流数据的技术,它对数据进行逐条分析或算法运算,尤其适合处理源源不断的数据流。在华为云CloudStream中,Flink和Spark被广泛应用于智能流计算,以应对各种实时处理需求。 Flink的...

    Spark环境下基于SMT的分布式限界模型检测.pdf

    可满足性模理论(Satisfiability Modulo Theories, SMT)是一种用于软件验证的数学框架,能够解决软件中的逻辑表达式是否可满足的问题。将两者结合起来的分布式限界模型检测,是一种利用分布式计算能力来提高软件...

    Hive内置函数速查表.pdf

    逻辑运算符在Hive中用于实现逻辑运算,如AND、OR和NOT,它们分别用于逻辑与、逻辑或以及逻辑非的操作。这些逻辑运算符在进行布尔逻辑判断时非常有用。 数值计算方面的函数是处理数值数据的关键。例如,round函数...

    大数据平台项目方案汇报.pptx

    - 技术难点涉及数据源完整性排查、多数据源清洗、GIS界面定制、数据库逻辑优化、大数据运算效率提升、定位算法设计以及Hadoop数据对接。 2. **系统架构**: - 系统架构分为采集层、共享层和应用层,其中网优大...

    计算机类专业(大数据方向)人才培养方案.pdf

    - 掌握数据挖掘编程语言(如R和Python),数据库技术,Java编程,Linux操作系统,Hadoop大数据存储与运算,Spark大数据快速运算等。 - 熟悉SQL,具有逻辑分析和文档编写能力,能处理、抽取、清洗和转换数据。 - ...

    java 大数据资料

    根据提供的信息,我们可以总结出以下相关的大数据及Java架构师领域的关键知识点: ### 一、Hadoop **Hadoop** 是一个能够对大量数据进行分布式处理的软件框架,它能够可靠地存储和处理PB级别的数据。Hadoop的核心...

    Flink技术原理

    2. **DataSet API**:主要用于批处理,但其运算逻辑可被DataStream API重用,实现批流统一。 ### 四、Flink的时间语义 1. **事件时间**:数据产生的实际时间,处理时考虑数据的延迟。 2. **处理时间**:系统处理...

    基于分布式计算框架的大数据机器学习.pdf

    1. 计算效率高:Spark通过有向无环图(DAG)支持循环数据流,在内存中存储中间数据,从而提高了迭代运算的效率。 2. 通用性强:Spark提供多种强大的组件库,支持SQL查询、流式计算、机器学习和图算法等多种组件。 3....

    大数据平台概要设计说明书

    - **大数据运算系统架构图**:展示了整个大数据平台的架构组成,包括各个组件之间的依赖关系。 - **hadoop体系各组件之间关系图**:具体说明Hadoop生态系统中各组件的功能及其相互间的协作方式。 - **计算平台...

    行业分类-物理装置-一种数据处理方法、装置及计算机存储介质和电子设备.zip

    它包括基本的算术运算、逻辑运算、统计分析、机器学习等。在现代信息技术中,数据处理方法涵盖了大量算法和工具,例如数据库管理系统、大数据处理框架(如Hadoop、Spark)以及各种数据分析软件。 接着,我们来看...

Global site tag (gtag.js) - Google Analytics