当前位置: 首页 > backend >正文

spark调度系统核心组件SparkContext、DAGSchedul、TaskScheduler介绍

目录

    • 1. SparkContext
    • 2.DAGScheduler
    • 3. TaskScheduler
    • 4. 协作关系

Spark调度系统的核心组件主要有SparkContext、DAGScheduler和TaskScheduler

SparkContext介绍

1. SparkContext

1、资源申请

  • SparkContext是Spark应用程序与集群管理器(如Standalone模式下的Master、Yarn模式下的ResourceManager)通信的接口,负责向集群管理器注册并申请资源
  • 例如在Standalone模式中,在Client中创建SparkContext(简称SC)后,SC向master注册并申请资源,master通过心跳了解worker节点资源情况,挑选空闲worker创建Executor分配给SC
  • Yarn - client模式下,先在client中创建SparkContext(SC),SC向ResourceManager申请创建ApplicationMaster,之后由ApplicationMaster向ResourceManager申请NodeManager来为SC创建Executor 。

2、任务划分与调度

  • SparkContext包含DAGScheduler和TaskScheduler。它负责将用户提交的任务进行分解,先分解成Stage,然后进一步分解出task,并发送到Executor中执行
  • 例如在任务运行阶段,Executor向SC报到后,SC将任务分解,Executor创建线程池来运行任务,并及时向SC汇报执行情况 。

3、其他职责

  • SparkContext运行在Driver中,负责产生DAG,提交Job,转化Task 。同时它也是Spark最重要的API,是用户逻辑与Spark集群主要的交互接口 。

2.DAGScheduler

1、构建DAG与划分Stage

  • 当用户在RDD上执行Action操作时,Spark会根据相关依赖关系进行血缘(lineage)计算,构建有向无环图(DAG)
  • DAGScheduler负责将DAG图根据宽依赖(如ShuffleDependency)划分成多个Stage。遇见一个宽依赖就划分一个Stage,这个Stage的任务被称为ShuffleMapTask
  • 如果遇见一个窄依赖,就可以将它加入到同一个Stage中。例如wordcount程序中,根据操作算子和RDD依赖关系进行Stage的划分 。

2、Stage调度:按照Stage之间的依赖顺序调度各个Stage

  • 例如在调度流程中,将DAG交给DAGScheduler后,它根据ShuffleDependency切分Stage,并按照依赖顺序调度这些Stage 。

3、失败恢复:当某个Stage执行失败时,DAGScheduler通过血缘回溯重新调度失败的Stage及其后续Stage 。例如通过重新提交相关的TaskSet来尝试恢复执行 。

  • 核心职责

    • RDD血缘关系转换为Stage图
    • 处理Stage划分策略
http://www.xdnf.cn/news/7494.html

相关文章:

  • 项目管理进阶:基于IPD流程的项目管理部分问题及建议书【附全文阅读】
  • 怎么样进行定性分析
  • 交通拥堵预测器(python)
  • Linux云计算训练营笔记day11【Linux CentOS7(cat、less、head、tail、lscpu、lsblk、hostname、vim、which、mount、alias)】
  • Python训练营打卡——DAY30(2025.5.19)
  • 苹果的人工智能领域慢热
  • esp32课设记录(三)mqtt通信记录 附mqtt介绍
  • thinkphp6实现统一监听并记录所有执行的sql语句除查询外
  • 2021-10-29 C++求位数及各位和
  • MathType公式如何按照(1)(2)…编号
  • 定积分的“偶倍奇零”性质及其使用条件
  • 软件设计师“关系模式和关系代数”真题考点分析——求三连
  • Mergekit——高频合并算法 TIES解析
  • C 语言学习笔记(函数2)
  • 【实战教程】如何添加git仓库的子模块
  • ipynb文件的一键访问(顺带启动jupyter)实现程序演示
  • Excel导入校验
  • 获得AI相关认证证书对个人职业发展的具体帮助有哪些?
  • mybtais plus使用拦截器打印完整SQL语句
  • Pyro:基于PyTorch的概率编程框架
  • 代码审查服务费用受哪些因素影响?如何确定合理报价?
  • 《Opensearch-SQL》论文精读:2025年在BIRD的SOTA方法(Text-to-SQL任务)
  • reshape/view/permute的原理
  • 7-2 银行业务队列简单模拟
  • 【PhysUnits】4.5 负数类型(Neg<P>)算术运算(negative.rs)
  • Node.js 实战八:服务部署方案对比与实践
  • 应对WEEE 2025:猎板PCB的区块链追溯与高温基材创新
  • 牛客网 NC274692 题解:素世喝茶
  • 低空经济的法律挑战与合规实践
  • uv 包管理工具使用教程