Spark 任务提交流程

任务提交流程

《Spark 任务提交流程》 image.png

分为四个阶段

  • 阶段一
    经过一系列的transformation,产生很多RDD,形成DAG
    DAG:(有向无环图,有方向 无闭环)
    数据是有流向的,不是闭环的

  • 阶段二
    把DAG提交给 DAGScheduler(DAG调度器),
    DAGScheduler 把DAG切分成一个个的 Stage。
    然后把 TaskSet(Task的一个集合)提交给 TaskScheduler(任务调度器)。
    根据窄依赖和宽依赖 来划分 stage,
    每个 stage 可以分成多个 pipeLine。
    不同流水线之间可以并行执行,提高效率.
    有几个分区 就产生几个task。

  • 阶段三
    把 TaskSet 提交给 TaskScheduler
    任务调度器把任务交给 Executor。
    Cluster Manager(Master)决定在哪些机器上启动 Executor,
    Driver 提交Task 到 Worker 下的 Executor

  • 阶段四
    Executor 创建很多 Threads,执行 Task。
    把数据写入 HDFS,
    Block manager 管理分区。

流程总结

Driver 在启动的时候 指定了要使用多少CPU、内存等资源,
启动时调用 main方法,在里面创建 sparkContext,和 Master 建立连接,
Master 根据任务需要多少资源,到集群里找到符合条件的 Worker,
Master 跟 Worker 进行 RPC 通信,告诉 Worker 启动 Executor。

Executor 启动之后 就和 Driver 建立起通信。
Driver 给Executor 下发任务,RDD -> DAG…

RDD的依赖关系

    原文作者:博弈史密斯
    原文地址: https://www.jianshu.com/p/8b653e73f929
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞