Spark学习(四):核心模块之Scheduler详解

1. 核心模块——Scheduler整体介绍

(1)Scheduler分类:

•Scheduler模块分为两大主要部分,DAGScheduler和TaskScheduler。

(2)Scheduler整体流程图

Spark学习(四):核心模块之Scheduler详解

(3)针对流程的解释:

1)创建RDD,经过一系列Transformation,最后Action

2)Action会出发SparkContext的runJob方法,交给DAGScheduler处理

3) DAGScheduler将DAG生成Stage

4)将Stage交给TaskScheduler

5)本地或者集群的Executor上运行

2. 核心模块——Scheduler之DAGScheduler

DAGScheduler把一个spark作业转换成成stage的DAG(Directed Acyclic Graph有向无环图),根据RDD和stage之间的关系,找出开销最小的调度方法,然后把stage以TaskSet的形式提交给TaskScheduler。

3. 核心模块——Scheduler之TaskScheduler

TaskScheduler的核心任务是:

接收DAGScheduler的Task请求,分发Task到集群运行并监控运行状态,并将结果以event的形式汇报给DAGScheduler 。

TaskScheduler的实现:

TaskScheduler是trait,无具体实现,仅仅为对外统一接口。任务调度模块基于两个Trait:TaskScheduler和 SchedulerBackend

TaskScheduler的工作流程图如下:

Spark学习(四):核心模块之Scheduler详解

流程图核心过程介绍:

1)Task调度与低层的资源管理器分离,仅仅根据提供的资源调度task,不关心资源的来源。

2)资源调度仅仅关心资源,与多种不同的资源调度系统(YARN/MESOS/Standalone)交互,获得空闲资源。

3)TaskSchedulerImp在接收到submitTasks时,从资源调度系统中获取到空闲资源,然后将空闲资源提交到到task调度系统,调度满足locality要求的task,并将task launch到executor。

相关推荐