Spark入门——3:Spark的任务调度

本文深入探讨Spark的任务调度机制,重点解析DAGScheduler如何将任务拆分成Stage,以及TaskScheduler如何进行物理调度。DAGScheduler基于ShuffleDependency划分Stage,并在所有依赖Stage完成后提交作业。TaskScheduler通过TaskSetManager将任务分配到Executor执行。
摘要由CSDN通过智能技术生成

         Spark的核心就是其调度管理逻辑。其中,处于整个程序运作的枢纽的是作业调度管理。

            在这里,我们首先看看DAGScheduler和TaskScheduler各自所负责的功能:DAGScheduler负责将任务拆分成不同阶段具有依赖关系的多批任务,也就是说DAGScheduler实际上是面向stage的调度器,它将任务拆分成不同的stage,我们可以把DAGScheduler看作是负责任务的逻辑调度;而TaskScheduler则是负责每个任务的实际物理调度。TaskScheduler和DAGScheduler通信是通过回调函数来完成的,

   


          首先,我们先列出任务调度涉及的相关概念:

          Task:单个分区数据集上的处理流程单元

          TaskSet:这是一组彼此之间有关联,但是互相不存在shuffle依赖的任务所组成的任务集

          Stage:任务集所对应的调度阶段

          Job:由RDD Action产生的多个stage所组成的一次计算操作

          Application:由多个作业组成的Spark应用程序


              作业调度的顶层逻辑

         spark程序实际上是以RDD为基础的计算操作。而这些操作是延迟执行的,这些操作只会生成对应的RDD关系链,只有当需要返回数据或者向外输出数据的操作才会触发实际的计算工作。

        作业的提交动作实际上是RDD的相关操作中被隐式调用的,在SparkContext内部通过调用DAGScheduler的作业提交接口来完成作业提交。上面已经讲过,DAGScheduler主要是计算作业和任务的依赖关系,属于任务的逻辑调度。两个主要的接口分别是submitJob和runJob。前者调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值