Spark 任务调度介绍

Spark任务调度

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

在这里插入图片描述

  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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部