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

spark任务的提交流程

目录

    • spark任务的提交流程
      • 1. 资源申请与初始化
      • 2. 任务划分与调度
      • 3. 任务执行
      • 4. 资源释放与结果处理
      • 附:关键组件协作示意图
      • 扩展说明

SparkContext介绍

spark任务的提交流程

  1. 用户创建一个 Spark Context
  2. Spark Context 去找 Cluster Manager 申请资源同时说明需要多少 CPU 和内存等资源;
  3. Cluster Manager 根据用户提交时设置的参数(CPU、内存),去找 WorkerNode 并启动 Executor,并介绍 Executor 给Driver;
  4. Driver 会将用户程序划分为不同的 stage每个 stage 会有一组完全相同的 task 来构成。这些 task 会作用于一些待处理的数据和不同的分区,在阶段划分和 task 创建完成后Driver 会向 Executor 发送 task
  5. Executor 在接收到 task 后会下载 task 运行时的依赖准备好 task 的运行环境,然后开始执行 task 并实时将 task 的运行环境传输给 Driver;
  6. Driver 根据收到的 task 的运行情况来进行状态更新,不断的调用 task 来交给 Executor 执行,直到 task 全部执行正确。若超过最大重试次数还没有执行成功,就会停止 task。

1. 资源申请与初始化

  • 用户创建SparkContext(SC),SC向集群管理器(如YARN或Standalone Master)申请资源,指定CPU和内存需求
  • 集群管理器根据参数分配资源:
    • Standalone模式:Master直接管理Worker节点,创建Executor并注册到SC
    • YARN模式:RM创建ApplicationMaster(AM),AM通过NodeManager(NM)申请容器资源启动Executor

2. 任务划分与调度

  • Driver(即SC所在进程)将用户程序解析为DAG图,根据宽依赖(ShuffleDependency)划分Stage
    • 宽依赖触发Shuffle操作,形成ShuffleMapStage
    • 窄依赖合并为ResultStage
  • 每个Stage被拆分为多个Task,每个Task对应一个数据分区的处理逻辑

3. 任务执行

  • Executor接收Task后:
    1. 下载任务依赖的代码和数据
    2. 创建线程池并行执行Task
    3. 实时向Driver汇报执行进度和状态
  • 任务失败时自动重试,超过最大重试次数则作业失败

4. 资源释放与结果处理

  • 所有Task执行完成后:
    • Driver生成最终结果(如写入存储系统)
    • SC向集群管理器释放资源
    • 在YARN模式中,AM会主动注销应用

附:关键组件协作示意图

http://www.lryc.cn/news/2385016.html

相关文章:

  • ELK简介和docker版安装
  • 利用条件编译实现RTT可控的调试输出
  • 【软件设计师】计算机网络考点整理
  • 智慧化工园区安全风险管控平台建设方案(Word)
  • 【uniapp】 iosApp开发xcode原生配置项(iOS平台Capabilities配置)
  • MYSQL优化(1)
  • C++可变参数宏定义语法笔记
  • 基于BERT预训练模型(bert_base_chinese)训练中文文本分类任务(AI老师协助编程)
  • Windows逆向工程提升之IMAGE_EXPORT_DIRECTORY
  • python与flask框架
  • 【普及+/提高】洛谷P2613 【模板】有理数取余——快读+快速幂
  • 从数据到智能:openGauss+openEuler Intelligence的RAG架构实战
  • 【Linux】初见,基础指令
  • 什么是实时流数据?核心概念与应用场景解析
  • 工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·状态机模型
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的社群构建与新型消费迎合策略研究
  • 高性能RPC框架--Dubbo(五)
  • 计算机视觉与深度学习 | PSO-MVMD粒子群算法优化多元变分模态分解(Matlab完整代码和数据)
  • 搭建自己的语音对话系统:开源 S2S 流水线深度解析与实战
  • feign调用指定服务ip端口
  • 【深尚想!爱普特APT32F1023H8S6单片机重构智能电机控制新标杆】
  • vue2 中的过滤器以及vue3中的替换方案
  • Unity EventCenter 消息中心的设计与实现
  • 瑞萨单片机笔记
  • 300. 最长递增子序列【 力扣(LeetCode) 】
  • MySQL远程连接10060错误:防火墙端口设置指南
  • 使用 OpenCV 实现 ArUco 码识别与坐标轴绘制
  • 2024CCPC辽宁省赛 个人补题 ABCEGJL
  • #6 百日计划第六天 java全栈学习