zoukankan      html  css  js  c++  java
  • [Spark Core] Spark Client Job 提交三级调度框架


    0. 说明

       官方文档  Job Scheduling

      Spark 调度核心组件:

    1. DagScheduler
    2. TaskScheduler
    3. BackendScheduler

     1. DagScheduler

      direct acycle graph , 有向无环图调度器

      高级调度器,面向的是 stage ,为每个 job 计算 stage 的 DAG 图,跟踪 RDD 和 stage 的输出,找出最小的调度策略来执行 job。

      该调度器提交 stage 给下层的 Task 调度器,以 taskSet 的形式进行提交。

      Spark stage 通过将 RDD 进行切割,按照 shuffle 的边界进行切割。具有窄依赖 RDD 的操作串联到每个 stage 的一个 taskset 中。

      shuffle 依赖的操作划分成两个 stage,上一个 stage 的输出供下一个 stage 进行读取。

      DAG 调度器决定运行每个 task 的首选位置。

      DAG 调度器处理因 stage 输出文件丢失导致的故障,该种情况下,之前的 stage 需要被重新提交。

      其他原因的故障由 task 调度器来处理。

      - Job
      ActiveJob,用户调用 action 方法时,job 通过 submitJob 方法进行提交。每个 job 需要多个阶段.

      - Stages
      ShuffleMapStage
      ResultStage

      - Tasks
      Spark 执行单位,需要将每个 task 发送给主机来执行。

      - Cache tracking:
      Dag 调度器能够找出哪些 RDD 被缓存了,避免 rdd 的重复计算。

      - Preferred locations
      Dag 调度器计算运行 task 的首选位置。

      - Cleanup:

      当依赖他们的运行时的 Job 完成之后清除所有数据结构,防止内存泄露。



  • 相关阅读:
    Java HttpClient使用小结
    【剑指offer】Q18:树的子结构
    poj3041-Asteroids , 二分图的最小顶点覆盖数 = 最大匹配数
    jquery.validate+jquery.form提交的三种方式
    "undefined reference to" 问题解决方法
    [Oracle]
    Effective_java之二:慎用重载函数
    C99规范
    迭代、递归替代循环
    1)Linux程序设计入门--基础知识
  • 原文地址:https://www.cnblogs.com/share23/p/9850312.html
Copyright © 2011-2022 走看看