Spark 任务调度介绍

Spark任务调度

在Spark的任务中,由Driver进行调度,这个工作包含:逻辑DAG产生、分区DAG产生、Task划分、将Task分配给Executor并监控其工作

Spark 任务调度介绍_第1张图片

  1. Driver被构建出来
  2. 构建执行环境入口对象SparkContext
  3. 基于DAG调度器(DAG Scheduler)构建逻辑Task分配
  4. 基于Task调度器(Task Scheduler)将逻辑Task分配到各个Executor上干活,并监控它们
  5. Worder(Executor)被Task Scheduler管理监控,听从它们的指令干活,并定期汇报进度

其中1,2,3,4都是Driver的工作,5是Worker的工作

Driver内的两个组件

DAG调度器:将逻辑的DAG图进行处理,最终得到逻辑上的Task划分
Task调度器:基于DAG Scheduler的产生,来规划这些逻辑的Task,应该在哪些物理的Executor上运行,以及监控管理它们的运行。

Spark中任务运行的层级关系梳理

  1. 一个Spark环境可以运行多个Application
  2. 一个代码运行起来,会成为一个Application
  3. Application内部可以有多个Job
  4. 每个Job由一个Action产生,并且每个Job有自己的DAG执行图
  5. 一个Job的DAG图,会基于宽窄依赖划分不同的阶段
  6. 不同阶段内基于分区数量,形成多个并行的内存迭代管道
  7. 每一个内存迭代管道形成一个Task(DAG调度器划分将Job内划分出具体的task任务,一个Job被划分出来的task在逻辑上称之为这个Job的taskset)

你可能感兴趣的:(spark,spark,大数据,分布式)