任务调度以及作业执行流程是Spark的核心,本文不进行源码级别的探究,只是概述Spark的核心组件、它们的作用以及它们如何协作以完成计算作业。
Spark核心组件
- SparkContext
- Job
- RDD
- DAGScheduler
- DAG
- TaskScheduler
- Stage
- TaskSet
- Task
- BlockManager
- BlockTracker
- ShuffleTracker
Spark集群架构概览
在上面这幅图片中,用户将任务提交给Driver,Driver将任务分发到所有的Worker节点(Driver最好跟Work节点在同一个局域网内,以使得任务的分发和结果回送更快)。Worker节点根据Driver提交过来的任务,算出位于本地的那部分数据,然后对它进行计算(这就是数据本地性的概念)。具体的做法是,Workder首先将数据加载到内存(如果内存中没有的话),形成RDD(所以,RDD存在于内存中),然后对RDD进行接下来的计算。
在这个架构中,Driver和Worker构成了Master/Slave架构,Driver负责分发任务,以及等待任务结果
另外一副架构图,在这个图中,Master和Driver是分开的,实际上是否会在一起呢?
spark计算速度快的原因
1.基于内存计算
2.general computation graph --即DAG,Worker对DAG进行优化,然后提交给TaskScheduler去执行。这里的问题是DAG何时构造,由谁构造,DAG的数据结构如何,DAG包含哪些信息,这个暂时放这里。目前要了解的重点是,DAG是提交给TaskScheduler等待调度执行。
Spark组件
上图中,自己编写程序提交到Master上,而Master是由四大部分组成(RDD Graph,Scheduler,Block Tracker以及Shuffle Tracker),启动RDD Graph就是DAG,它会提交给Task Scheduler任务调度器等待调度执行,具体执行时,Task Scheduler会把任务提交到Worker节点上。Block Tracker用于记录计算数据在Worker节点上的块信息。Shuffle Blocker用于记录RDD在计算过程中遇到Shuffle过程时会进行物化,那么Shuffle Tracker用于记录这些物化的RDD的存放信息
,
RDD Graph
上面浅绿色的四个圆柱形框构成一个RDD,每个圆柱框都是一个Partition,每个Partition分配一个任务来执行。浅绿色圆柱框内的绿色矩形框表示实施RDD操作后的数据集,比如对于Task1,先对Partion执行map操作,再执行filter操作得到两个绿色矩形框。
因为map操作或者filter是对RDD进行调用的,所以,RDD中的Partition都会执行相同的动作序列,每个操作结束时,每个Partition都会产生一个数据集,这些数据集对应一个RDD,如MappedRDD,FilteredRDD。这样,就形成了RDD Graph,如上图中的八个绿色框,上面四个框形成一个RDD,下面四个框形成一个RDD。
作业与任务调度
DAGScheduler
1.三个输入元素
问题:
1.target RDD是什么RDD是初始RDD还是包含了所有的RDD,比如rdd.map().filter()操作,target RDD是什么
2.针对partition的function指的是什么,比如rdd.map().filter()操作,是map和filter函数都包括吗?
具体的,DAG Scheduler完成下面三个任务:
1.为每个Job(一个Action类型的操作如collect,count)分割Stage,同时决定最佳路径。DAGScheduler会记录哪个RDD或者Stage会被物化,从而寻找一个最佳调度方案。
2.将TaskSet提交给Task Tracker
3.重新提交输出lost的Stage
2. DAGScheduler优化
1.stage的操作是pipleline的
比如,stage内有5个操作,Spark的做法是1+1+1+1+1=5,而对于Hadoop而言,它的做法是1+1=2, 2+1=3,3+1=4,4+1=5,即每计算一步就先存入HDFS,然后后面的操作再从HDFS上都出来,因此IO消耗非常大。
2. 基于Partition选择最小化的join算法,减少Shuffle操作
在Hadoop中,Shuffle相当于Barrier(Join等待合并结果),Reduce操作需要等待Map操作完全执行完
3. 重用RDD Cache过的数据
因为DAGScheduler知道哪些RDD和Stage已经物化过,所以DAGScheduler在执行路径上,会尽可能的使用已经缓存过的数据
Stage
从上图中可以看到,AB位于同一个Stage,CDE位于同一个Stage。AB和CDE的结果做Join是产生了一个新的Stage
如下两个阶段一定会产生Stage
1.从数据源加载数据形成RDD时,一定会有Stage的产生
2.进行Shuffle,即有宽依赖的时候一定有Stage的产生,所以上面的DE应该产生一个Stage
Job执行流程
- 大小: 27.4 KB
- 大小: 12.8 KB
- 大小: 31.7 KB
- 大小: 69.4 KB
- 大小: 55.4 KB
- 大小: 67.2 KB
- 大小: 53.8 KB
- 大小: 245.9 KB
分享到:
相关推荐
Python3实战Spark大数据分析及调度-第8章 Spark SQL.zip
巨鲸任务调度平台为美柚大数据研发的分布式计算任务调度系统,提供Spark、Flink等批处理任务的DAG调度和流处理任务的运行管理和状态监控,并具有Yarn应用管理、重复应用检测、大内存应用检测等功能。
Spark作业调度 非常不错的讲解 值得分享
通过提供任务编程API和接口协议, 方便支持用户使用不同的编程语言实现任务执行以及自定义任务类型的扩展,以满足各种业务场景下的任务执行。支持多种接入方式,支持Java SDK包方式、Java Agent独立进程方式接入,...
巨鲸任务调度平台为美柚大数据研发的分布式计算任务调度系统,提供Spark、Flink等批处理任务的DAG调度和流处理任务的运行管理和状态监控,并具有Yarn应用管理、重复应用检测、大内存应用检测等功能。 服务基于Spring...
1, 通过源码精通Spark内核实现和任务调度; 2,精通RDD、DAGScheduler、TaskScheduler和Worker节点内部的工作的每一步的细节; 3,精通Job的逻辑执行和物理执行; 4,精通Shuffle、Cache、Checkpoint和Broadcast ...
深入理解spark-两种调度模式FIFO,FAIR模式,一个任务提交会由DAG拆分为job,stage,task,最后提交给TaskScheduler,在提交taskscheduler中会根据master初始化taskscheduler和schedulerbackend两个类,并且初始化...
1、分布式作业管理、调度、监控; 2、基于spark streaming+Cassandra的实时分析和监控,包括性能分析、账号安全主动防御。 web部分采用spring boot开发,前端采用angularJS组织页面相关的各个部分,系统的技术和效果...
Python3实战Spark大数据分析及调度-第9章 Spark Streaming.zip
Python3实战Spark大数据分析及调度-第6章 Spark Core进阶.zip
Python3实战Spark大数据分析及调度-第7章 Spark Core调优.zip
2.3 Spark作业运行流程 55 3 Spark工作原理 55 3.1 作业调度简介 55 3.2 Application调度 56 3.3 Job调度 56 3.4 Tasks延时调度 56 第七章 Spark运行原理 57 1 Spark运行基本流程 57 2 Spark在不同集群中的运行架构 ...
包含:实时流任务调度、kafka偏移量管理,web后台管理,web api启动、停止spark streaming,宕机告警、自动重启等等功能支持,用户只需要关心业务代码,无需关注繁琐的技术细节,大大提高实时流开发效率和难度(附...
目前hadoop hive 及spark脚本需要用定时脚本,任务调度使用的是crontab的任务调度
为您提供BigWhale任务调度系统下载,巨鲸任务调度平台为美柚大数据研发的分布式计算任务调度系统,提供Spark、Flink等批处理任务的DAG执行调度和流处理任务的状态监测调度,并具有重复应用检测、大内存应用检测等...
(3)Task是Stage的子集,以并行度(分区数)来衡量,分区数是多少,则有多少个task (2)SparkContext将Job交给DAGScheduler
资源名称:Spark大数据处理技术内容简介:《Spark大数据处理技术》以Spark 0.9版本为基础进行编写,是一本全面介绍Spark及Spark生态圈相关技术的书籍,是国内首本深入介绍Spark原理和架构的技术书籍。主要内容有...
主要内容包括Spark 生态圈、实战环境搭建、编程模型和内部重要模块的分析,重点介绍了消息通信框架、作业调度、容错执行、监控管理、存储管理以及运行框架,同时还介绍了Spark 生态圈相关组件,包括Spark SQL 的即 ...
本资源为网页,不是PDF Apache Spark 2.0.2 中文文档 Spark 概述 编程指南 快速入门 Spark 编程指南 概述 Spark 依赖 Spark 的初始化 Shell 的使用 ... 作业调度 Spark 安全 硬件配置 构建 Spark
Python3实战Spark大数据分析及调度-第1章 课程介绍.zip