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

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

目录

    • 1. SparkContext
    • 2.DAGScheduler
    • 3. TaskScheduler
    • 4. 协作关系
    • 5 TaskSet的定义
    • 6. 组件关系说明

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划分策略
      RDD1
      ShuffleDependency
      ShuffleMapStage
http://www.lryc.cn/news/2385089.html

相关文章:

  • BU9792驱动段式LCD
  • Springboot通过SSE实现实时消息返回
  • SD-WAN技术详解:如何优化网络性能与QoS实现?(附QoS策略、链路聚合、网络架构对比)
  • 力扣-将x减到0的最小操作数
  • Web前端开发: 什么是JavaScript?
  • 三、【数据建模篇】:用 Django Models 构建测试平台核心数据
  • 【JAVA】比较器Comparator与自然排序(28)
  • shp2pgsql 导入 Shp 到 PostGIS 空间数据库
  • word设置如“第xx页 共xx页”格式的页码
  • DL00912-基于自监督深度聚类的高光谱目标检测含数据集
  • PostgreSQL架构
  • 文章记单词 | 第111篇(六级)
  • 在Java中,将Object对象转换为具体实体类对象
  • Runtipi - 开源个人家庭服务器管理工具
  • Vue3和React中插件化设计思想
  • 基于ResNet的医学影像辅助诊断系统
  • HJ106 字符逆序【牛客网】
  • 力扣HOT100之二叉树: 236. 二叉树的最近公共祖先
  • 腾讯音乐一面
  • 【PhysUnits】4.4 零类型(Z0)及其算术运算(zero.rs)
  • Pluto实验报告——基于2ASK的简易的通信系统
  • Python排序函数全面指南:从基础到高级
  • 深入了解redis的哈希槽的知识
  • 农业机械化、电气化和自动化知网英文普刊:1天录用,2周见刊发表!
  • java将rtsp转成flv在浏览器播放
  • Docker-Compose使用自定义网桥后在OpenWrt系统中容器无法访问网络解决方案
  • 界面组件DevExpress WPF中文教程:Grid - 行和卡片
  • Qt enabled + geometry 属性(2)
  • Llamaindex自学笔记(完)
  • 安全生态与职业跃迁