《Spark大数据分析实战》——1.3节Spark架构与运行逻辑

1.3 Spark架构与运行逻辑
1.?Spark的架构
Driver:运行Application的main()函数并且创建SparkContext。
Client:用户提交作业的客户端。
Worker:集群中任何可以运行Application代码的节点,运行一个或多个Executor进程。
Executor:运行在Worker的Task执行器,Executor启动线程池运行Task,并且负责将数据存在内存或者磁盘上。每个Application都会申请各自的Executor来处理任务。
SparkContext:整个应用的上下文,控制应用的生命周期。
RDD:Spark的基本计算单元,一组RDD形成执行的有向无环图RDD Graph。
DAG Scheduler:根据Job构建基于Stage的DAG工作流,并提交Stage给
TaskScheduler。
TaskScheduler:将Task分发给Executor执行。
SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。
2.?运行逻辑
(1)Spark作业提交流程
如图1-3所示,Client提交应用,Master找到一个Worker启动Driver,Driver向Master或者资源管理器申请资源,之后将应用转化为RDD有向无环图,再由DAGScheduler将RDD有向无环图转化为Stage的有向无环图提交给TaskScheduler,由TaskScheduler提交任务给Executor进行执行。任务执行的过程中其他组件再协同工作确保整个应用顺利执行。

(2)Spark作业运行逻辑
如图1-4所示,在Spark应用中,整个执行流程在逻辑上运算之间会形成有向无环图。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到F的过程中又会进行Shuff?le。最后RDD F通过函数saveAsSequenceFile输出保存到HDFS中。

时间: 2024-10-31 20:53:41

《Spark大数据分析实战》——1.3节Spark架构与运行逻辑的相关文章

《Spark大数据分析实战》——3.1节SQL on Spark

3.1 SQL on Spark AMPLab将大数据分析负载分为三大类型:批量数据处理.交互式查询.实时流处理.而其中很重要的一环便是交互式查询.大数据分析栈中需要满足用户ad-hoc.reporting.iterative等类型的查询需求,也需要提供SQL接口来兼容原有数据库用户的使用习惯,同时也需要SQL能够进行关系模式的重组.完成这些重要的SQL任务的便是Spark SQL和Shark这两个开源分布式大数据查询引擎,它们可以理解为轻量级Hive SQL在Spark上的实现,业界将该类技术

《Spark大数据分析实战》——3.3节GraphX

3.3 GraphX GraphX是Spark中的一个重要子项目,它利用Spark作为计算引擎,实现了大规模图计算的功能,并提供了类似Pregel的编程接口.GraphX的出现,将Spark生态系统变得更加完善和丰富:同时以其与Spark生态系统其他组件很好的融合,以及强大的图数据处理能力,在工业界得到了广泛的应用.本章主要介绍GraphX的架构.原理和使用方式.3.3.1 GraphX简介 GraphX是常用图算法在Spark上的并行化实现,同时提供了丰富的API接口.图算法是很多复杂机器学习

《Spark大数据分析实战》——1.2节Spark生态系统BDAS

1.2 Spark生态系统BDAS 目前,Spark已经发展成为包含众多子项目的大数据计算平台.BDAS是伯克利大学提出的基于Spark的数据分析栈(BDAS).其核心框架是Spark,同时涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL,提供机器学习功能的系统MLBase及底层的分布式机器学习库MLlib,并行图计算框架GraphX,流计算框架Spark Streaming,近似查询引擎BlinkDB,内存分布式文件系统Tachyon,资源管理框架Mesos等子项目.这些子项目在

《Spark大数据分析实战》——3.2节Spark Streaming

3.2 Spark StreamingSpark Streaming是一个批处理的流式计算框架.它的核心执行引擎是Spark,适合处理实时数据与历史数据混合处理的场景,并保证容错性.下面将对Spark Streaming进行详细的介绍.3.2.1 Spark Streaming简介Spark Streaming是构建在Spark上的实时计算框架,扩展了Spark流式大数据处理能力.Spark Streaming将数据流以时间片为单位进行分割形成RDD,使用RDD操作处理每一块数据,每块数据(也就

《Spark大数据分析实战》——2.2节远程调试Spark程序

2.2 远程调试Spark程序 本地调试Spark程序和传统的调试单机的Java程序基本一致,读者可以参照原来的方式进行调试,关于单机调试本书暂不赘述.对于远程调试服务器上的Spark代码,首先请确保在服务器和本地的Spark版本一致.需要按前文介绍预先安装好JDK和Git. (1)编译Spark 在服务器端和本地计算机下载Spark项目. 通过下面的命令克隆一份Spark源码: git clone https:// github.com/apache/spark 然后针对指定的Hadoop版本

《Spark大数据分析实战》——2.3节Spark编译

2.3 Spark编译用户可以通过Spark的默认构建工具SBT进行源码的编译和打包.当用户需要对源码进行二次开发时,则需要对源码进行增量编译,通过下面的方式读者可以实现编译和增量编译.(1)克隆Spark源码可通过克隆的方式克隆Spark源码,如图2-9所示. git clone https:// github.com/apache/spark 这样将会从github将Spark源码下载到本地,建立本地的仓库.(2)编译Spark源码在Spark项目的根目录内执行编译和打包命令(如图2-10所

《Spark大数据分析实战》——3.5节本章小结

3.5 本章小结本章主要介绍了BDAS中广泛应用的几个数据分析组件.SQL on Spark提供在Spark上的SQL查询功能.让用户可以基于内存计算和SQL进行大数据分析.通过Spark Streaming,用户可以构建实时流处理应用,其高吞吐量,以及适合历史和实时数据混合分析的特性使其在流数据处理框架中突出重围.GraphX充当Spark生态系统中图计算的角色,其简洁的API让图处理算法的书写更加便捷.最后介绍了MLlib--Spark上的机器学习库,它充分利用Spark内存计算和适合迭代的

《Spark大数据分析实战》——第2章Spark开发与环境配置

第2章Spark开发与环境配置用户进行Spark应用程序开发,一般在用户本地进行单机开发调试,之后再将作业提交到集群生产环境中运行.下面将介绍Spark开发环境的配置,如何编译和进行源码阅读环境的配置.用户可以在官网上下载最新的AS软件包,网址为:http://spark.apache.org/.

《Spark大数据分析实战》——3.4节MLlib

3.4 MLlib MLlib是构建在Spark上的分布式机器学习库,充分利用了Spark的内存计算和适合迭代型计算的优势,将性能大幅度提升.同时由于Spark算子丰富的表现力,让大规模机器学习的算法开发不再复杂.3.4.1 MLlib简介 MLlib是一些常用的机器学习算法和库在Spark平台上的实现.MLlib是AMPLab的在研机器学习项目MLBase的底层组件.MLBase是一个机器学习平台,MLI是一个接口层,提供很多结构,MLlib是底层算法实现层,如图3-17所示. MLlib中包