几个基本概念:
(1)job:包含多个task组成的并行计算,往往由action催生。
(2)stage:job的调度单位。
(3)task:被送到某个executor上的工作单元。
(4)taskSet:一组关联的,相互之间没有shuffle依赖关系的任务组成的任务集。
一个应用程序由一个driver program和多个job构成。一个job由多个stage组成。一个stage由多个没有shuffle关系的task组成。
spark应用程序的运行架构:
(1)简单的说:
由driver向集群申请资源,集群分配资源,启动executor。driver将spark应用程序的代码和文件传送给executor。executor上运行task,运行完之后将结果返回给driver或者写入外界。
(2)复杂点说:
提交应用程序,构建sparkContext,构建DAG图,提交给scheduler进行解析,解析成一个个 stage,提交给集群,由集群任务管理器进行调度,集群启动spark executor。driver把代码和文件传给executor。executor进行各种运算完成task任务。driver上的block tracker记录executor在各个节点上产生的数据块。task运行完之后,将数据写入HDFS上或者其他类型数据库里。
(3)全面点说:
spark应用程序进行各种transformation的计算,最后通过action触发job。提交之后首先通过 sparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler进行解析,解析时是以shuffle为边界,反向解 析,构建stage,stage之间也有依赖关系。这个过程就是对DAG图进行解析划分stage,并且计算出各个stage之间的依赖关系。然后将一个 个TaskSet提交给底层调度器,在spark中是提交给taskScheduler处理,生成TaskSet manager,最后提交给executor进行计算,executor多线程计算,计算完反馈给TaskSetmanager,再反馈给 taskScheduler,然后再反馈回DAGScheduler。全部运行完之后写入数据。
(4)更加深入理解:
应用程序提交后,触发action,构建sparkContext,构建DAG图,提 交给DAGScheduler,构建stage,以stageSet方式提交给TaskScheduler,构建taskSet Manager,然后将task提交给executor运行。executor运行完task后,将完成信息提交给schedulerBackend,由 它将任务完成的信息提交给TaskScheduler。TaskScheduler反馈信息给TaskSetManager,删除该task任务,执行下 一个任务。同时TaskScheduler将完成的结果插入到成功队列里,加入之后返回加入成功的信息。TaskScheduler将任务处理成功的信息 传给TaskSet Manager。全部任务完成后TaskSet Manager将结果反馈给DAGScheduler。如果属于resultTask,交给JobListener。如果不属于resultTask,保 存结果。
相关推荐
- Master负责接收客户端提交的应用程序,分配资源给Worker节点上的Executor。 - **YARN集群**: - 在Hadoop YARN环境中运行Spark应用。 - YARN负责资源管理和任务调度。 - **Mesos集群**: - 使用Apache Mesos作为...
Spark Web UI 是一个图形化的用户界面,用于监控正在运行的 Spark 应用程序的状态。它提供了丰富的信息,帮助用户了解应用程序的运行情况、性能瓶颈以及资源使用情况等。 - **启动 Spark 和 HDFS**:在使用 Spark ...
相较于其他大数据处理技术如Hadoop和Storm,Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。 Spark的基本架构主要包括以下几个关键部分: 1. Spark Core...
lApplication:SparkApplication的概念和HadoopMapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码;lDriver:Spark中的Driver即运行上述...
这是第12次上海 Spark Meetup的分享资料.本文回顾NUMA的技术要点以及它如何影响内存密集型Spark应用程序的性能。然后将介绍识别NUMA性能问题的工具和方法,以及作者团队为Spark任务调度添加NUMA感知方面的工作。
在术语定义中,Application指的是用户编写的Spark应用程序,它由运行main()函数的Driver和分布在集群中多个节点上运行的Executor组成。Driver创建SparkContext以准备运行环境,SparkContext负责与ClusterManager通信...
2. **SparkContext**:是Spark应用的入口点,它连接到集群管理器并创建一个Spark应用程序。 3. **Cluster Manager**:负责资源分配,如YARN、Mesos或Standalone模式。 4. **Executor**:在每个工作节点上运行,...
Spark_JAR包是Apache Spark项目的核心组件之一,它包含了运行Spark应用程序所必需的类库和依赖。Spark作为一个快速、通用且可扩展的数据处理框架,它为大数据处理提供了丰富的API,支持Scala、Java、Python和R等多种...
Driver Program是运行应用程序的主节点,它负责创建SparkContext对象,该对象是与Spark集群进行交互的主要接口。Cluster Manager负责资源调度,Spark支持多种Cluster Manager,包括Spark自带的Standalone模式,以及...
Spark内核篇01主要探讨的是Spark的通信架构和集群启动流程,这对于理解Spark如何高效地处理大数据至关重要。首先,我们需要了解Spark的...通过深入学习Spark内核,开发者可以更好地设计和维护高效率的Spark应用程序。
1. Application:Spark应用程序,指的是用户编写的Spark应用程序,包含了Driver功能代码和分布在集群中多个节点上的Executor代码。 2. Driver:驱动程序,Spark中的Driver即运行上述Application的Main()函数,并且...
总之,理解Spark的软件组件架构和Task Scheduler的工作方式对于有效地使用和优化Spark应用至关重要。通过对这些核心组件的学习,开发者可以更好地设计和调试大数据处理任务,从而充分利用Spark的强大性能。
9. **Spark实战**:提供实际案例,展示如何在不同场景下部署和运行Spark应用,包括数据预处理、实时分析、推荐系统等。 通过这本书,读者不仅可以掌握Spark的基础知识,还能深入了解其内核机制,从而更好地利用...
《Spark技术内幕深入解析Spark内核架构设计与实现原理》这本书...通过深入学习这些知识点,读者不仅能掌握Spark的基本概念和操作,还能了解到如何设计和优化Spark应用程序,从而在大数据处理领域发挥Spark的强大潜力。
性能优化则是针对Spark应用程序而言,是提升数据处理速度和效率的重要手段。这通常包括对Spark运行时配置的调整、数据分区的优化、内存管理、以及对底层硬件资源的合理利用等方面。 文档的内容涉及了Spark的多个...
- **微服务架构**:与传统的单体架构相比,微服务架构将应用程序分解为一组小型、独立的服务,每个服务都实现了特定的业务功能,并且可以通过简单的HTTP接口进行通信。 4. **具体案例解析** - **葡萄酒评分数据集...
在核心组件方面,Spark应用程序包括驱动程序(Driver program)和执行器(Executors)。驱动程序是一个Java程序,它通过创建SparkContext来启动应用。而执行器则是执行任务和存储数据的工作进程。在集群管理器...
Spark的调度器分为粗粒度和细粒度两种模式,根据应用程序的需求选择。资源管理则依赖于底层的集群管理器,如YARN或Mesos,以动态分配和释放Executor资源。 通过深入理解和掌握以上知识点,开发者可以更好地利用...
REST (Representational State Transfer) 是一种用于创建 Web 应用程序的设计风格和开发方式,它使用 HTTP 协议定义了一组标准接口来实现客户端与服务器之间的交互。 **特点**: - **无状态**: 每次请求都是独立的...