Spark 任务调度概述

概要

主要介绍Standalone部署模式下,从命令行执行spark-submit命令提交任务开始,到最后计算结果返回driver的完整过程,主要涉及到spark-core中deploy、executor和scheduler部分,但DAGScheduler相关的部分涉及到内容较多,留作后面详细分析。

Spark Doc中的介绍

Spark官方文档中,Cluster Mode Overview部分对执行的流程做了简要的介绍,如下

上图涉及到的概念spark文档中给出了解释,后续的分析会从代码层面有更直观的介绍,从上图能够得出Spark执行的大致过程,如下

  1. Driver程序(即用户编写的Spark程序)初始化SparkContext对象。
  2. SparkContext对象初始化过程中,连接集群资源管理器Cluster Manager,申请资源,注册APP信息。
  3. CM根据Driver申请的资源,在Worker上创建Executor。
  4. 创建好的Executor将其自身信息发送给Driver。
  5. Driver将用户编写的代码转为Task,发送给相应到Executor,进行计算。
  6. Executor计算结果返回给Driver,最后Executor的关闭及APP信息的修改等。

下图描述了Driver提交task的流程,详细流程中的Spark 任务调度之Driver send Task 会大致介绍这部分,后续会详解DAGScheduler的作用。
这里写图片描述

结合上面两幅图,对任务的提交和调度有了初步的认识。

详细流程

以上面两幅图为基础,接下来结合源码详细介绍Standalone部署模式下,deploy-mode为cluster的任务调度流程,完整流程如下,将整个流程大致分为了八部分,如下图中小标,并对每个部分详细介绍

  1. submit Driver
    Spark 任务调度之Submit Driver
  2. launch Driver
    Spark 任务调度之Launch Driver
  3. registerApp
    Spark 任务调度之Register App
  4. launch Executor
    Spark 任务调度之Launch Executor
  5. start CoarseGrainedExecutorBackend
    Spark 任务调度之启动CoarseGrainedExecutorBackend
  6. create Executor && register Executor
    Spark 任务调度之创建Executor
  7. Driver send Task
    Spark 任务调度之Driver send Task
  8. Executor sendback Result
    Spark 任务调度之Executor执行task并返回结果
  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值