摘要:

  1. 基本概念

    1.1   Application

    1.2    Job

    1.3   Stage

    1.4   TaskSet

    1.5   Task

    1.6   DAG

      2.相关的类

    2.1DAGScheduler

    2.2ActiveJob

    2.3Stage

    2.4Task

  3.运行方式

  4.工作流程

    4.1划分Stage

    4.2生成Job,提交Stage

    4.3任务集的提交

    4.4任务作业完成状态的监控

    4.5任务结果的获取

内容总结:

  1. 基本概念

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

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

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

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

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

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

  •   DAG:有向无环图

  2. 相关的类:

  

   2.1作业调度(DAGScheduler)

   DAGScheduler 是基于stage的高级调度(逻辑调度),这个调度会计算每个Job对应的stage的DAG。然后然后以TaskSet的形式提交stage到底层的TaskScheduler.

   万码学堂,电脑培训,计算机培训,Java培训,JavaEE开发培训,青岛软件培训,软件工程师培训

  Spark的stages 是以shuffle为边界切分RDD图来创建的。具有窄依赖(例:map(),filter())的操作会在对应stage的一系列任务中管道式的运行,但是具有宽依赖的操作则需要多个stage.最后所有的stage之间将只有shuffle依赖关系。

  实际上这些操作发生在RDD.compute(),在各个RDD的实现上,比如MappedRDD,FilteredRDD等

   万码学堂,电脑培训,计算机培训,Java培训,JavaEE开发培训,青岛软件培训,软件工程师培训

  

  下面提到还一些概念: