美文网首页Spark深入学习
【Spark Core】从作业提交到任务调度完整生命周期浅析

【Spark Core】从作业提交到任务调度完整生命周期浅析

作者: JasonDing | 来源:发表于2015-07-20 21:19 被阅读1686次

    引言

    这一小节我们将就之前写的几篇博文,从提交Job,到Stage划分,到任务分发,再到任务的执行,这一完整过程做一系统的回顾。在这一过程中理清思路,明确几篇文章中涉及到的调度关系和逻辑关系。

    Spark作业提交到执行过程


    上面这个图摘自张包峰的csdn博客,这个图很清晰的描述了作业提交执行的整个过程,略去了细节原理,给人一种清晰直观的流程概况。
    通过该图结合一下我之前的博文来描述一下文章的内容和相互关系:
    DAGScheduler源码浅析介绍了SparkContext通过DAGScheduler的runJob提交作业,其中通过DAGScheduler的事件队列来处理JobSubmitted事件来处理提交的Job。
    DAGScheduler源码浅析2对DAGScheduler中涉及的两个重要组件进行的补充介绍。
    Stage生成和Stage源码浅析介绍了将Job划分为Stage的过程,Spark根据RDD的依赖关系划分Stage,最终将其封装成taskset进行提交。
    TaskScheduler源码与任务提交原理浅析1介绍了TaskScheduler和SchedulerBackend的关系。
    TaskScheduler源码与任务提交原理浅析2介绍了Driver侧的SchedulerBackend是如何进行资源分配和任务调度的,最终派发给Executor去执行。
    任务执行机制和Task源码浅析2介绍了Task在Executor中的执行过程。

    Driver的任务提交过程


    1、Driver程序的代码运行到action操作,触发了SparkContext的runJob方法。
    2、SparkContext调用DAGScheduler的runJob函数。
    3、DAGScheduler把Job划分stage,然后把stage转化为相应的Tasks,把Tasks交给TaskScheduler。
    4、通过TaskScheduler把Tasks添加到任务队列当中,交给SchedulerBackend进行资源分配和任务调度。
    5、调度器给Task分配执行Executor,ExecutorBackend负责执行Task。

    参考资料

    Spark源码系列(四)图解作业生命周期
    Spark的任务调度

    转载请注明作者Jason Ding及其出处
    GitCafe博客主页(http://jasonding1354.gitcafe.io/)
    Github博客主页(http://jasonding1354.github.io/)
    CSDN博客(http://blog.csdn.net/jasonding1354)
    简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
    Google搜索jasonding1354进入我的博客主页

    相关文章

      网友评论

        本文标题:【Spark Core】从作业提交到任务调度完整生命周期浅析

        本文链接:https://www.haomeiwen.com/subject/reppqttx.html