Spark技术内幕读书笔记:Spark核心——DAGScheduler任务切分调度与TaskScheduler任务执行调度计算过程详解

本文深入探讨Spark的调度系统,包括DAGScheduler如何根据DAG进行任务切分,TaskScheduler如何执行任务。重点介绍了FIFO和公平调度算法,解析了任务调度的整个流程,从job提交到stage划分,再到task的执行和资源分配。通过理解这些机制,有助于优化Spark应用的性能。
摘要由CSDN通过智能技术生成

————Spark技术内幕读书笔记————

本书的三个核心:

 

 

Scheduler任务调度充分体现了与MapReduce完全不同的设计思想。

MapReduce把计算拆分为Map阶段与Reduce阶段,一个Job两阶段完成就完成了,采用的是分治思想,对于复杂的计算时可能需要多次串联多个MR生成多个Job来完成。

而Spark则不同,采用的是内存迭代式计算,也就是一个Job它可以分为n个阶段(Stage),Stage划分的依据是Shuffle,无论多复杂的计算大部分都可以在多个Job中完成所有的Stage,且Shuffle时除非内存不足时才会Spill写磁盘,否则子Stage的RDD会根据Shuffle的算法从父Stage的Partition中拿到属于自己Partition的数据,生成新的RDD,所有迭代计算都是在内存中完成,效率就比较高。

调度系统——上面基于内存的迭代式计算主要就依赖于DAGScheduler与TaskScheduler来分配计算资源!

Spark对于DAG与Task的实现以及不同执行阶段的划分和任务的提交执行,充分体现了其设计的优雅与高效!

 

spark集群中Driver、Cluster Manager、Worker、Executor之间在的关系图:

————第四章 Scheduler模块详解————

 

任务调度整体架构

将用户提交的计算任务按照DAG划分不同的阶段的计算任务提交到集群进行最终的计算

RDD Objects:从RDDS中构建DAG。实际代码中创建的RDD,是DAG的基本元素,Spark提供了丰富的Transformation和Action算子来对它进行操作。

DAGScheduler:对DAG进行任务切分,生成TaskSet。分析用户提交的应用、并根据计算任务的依赖关系建立 DAG,然后将DAG划分为不同的Stage阶段,其中每个Stage由可以并发进行执行的一组Task任务构成,所有Task的执行逻辑完全相同,只是处理的数据不一样。DAG无论在任何部署方式下都是相同的。在DAGScheduler将Task任务划分完成后,将Task组提交给TaskScheduler。

TaskScheduler:启动任务并调度任务(就近原则)。收到任务集后,TaskScheduler通过Cluster Manager在集群的某个Worker的Executor上启动任务。任务完成后将结果保存到指定地方或回传到Driver。

TaskScheduler为创建它的SparkContext调度任务,从DAGScheduler接收不同Stage的任务,并向集群提交这些任务,并为执行得特别慢的任务启动备份任务。

TaskScheduler的具体实现交给TaskSchedulerImpl实现。

TaskSchedulerImpl会在以下4种情况调用SchedulerBackend的reviveOffers为其分配计算资源:

  1. 有新任务提交时
  2. 有任务执行失败时
  3. 计算节点Executor不可用时
  4. 某些任务运行过慢需要为其重新分配资源时。

Executor:任务执行

最核心的三个类:

  • org.apache.spark.scheduler.DAGScheduler
  • org.apache.spark.scheduler.SchedulerBackend
  • org.apache.spark.scheduler.TaskScheduler

 

SchedulerBackend:分配当前可用计算资源

为Task分配Executor计算资源,并在所分配的Executor上启动Task,完成计算的调度过程。reviveOffers是具体实现的方法。

每个

Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill任务等操作。目前已经有像IBM、腾讯、美团、360等400多家公司生产上使用。 调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinScheduler ? DolphinScheduler 的定位是大数据工作流调度。通过把大数据和工作流做了重点标注. 从而可以知道DolphinScheduler的定位是针对于大数据体系。DolphinScheduler 发展很快 很多公司调度都切换到了DolphinScheduler,掌握DolphinScheduler调度使用势在必行,抓住新技术机遇,为跳巢涨薪做好准备。 优秀的框架都是有大师级别的人写出来的,包含了很多设计思想和技术。DolphinScheduler也不例外,它是一个非常优秀的框架,用到很多技术和设计思想,本课程会带大家深入DolphinScheduler框架源码,包括设计的思想和技术都会讲解,DolphinScheduler源码很多,会按照模块进行讲解,学习完课程后,不仅可以熟悉DolphinScheduler使用,而且可以掌握很多优秀的设计思想和技术,给自己的技术带来很大提升,为跳巢涨薪做好准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pub.ryan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值