Spark任务调度流程详解

1. 核心调度组件
  • DAGScheduler:负责将Job拆分为Stage,处理Stage间的依赖关系。

  • TaskScheduler:将Task分配到Executor,监控任务执行。

  • SchedulerBackend:与集群管理器(如YARN、K8s)通信,管理Executor资源。


2. 调度流程分步拆解
步骤1:用户提交代码
Scala 复制代码
val rdd = sc.textFile("hdfs://data.txt")
  .flatMap(_.split(" "))
  .map((_, 1))
  .reduceByKey(_ + _)
rdd.collect()  // 触发Job提交
步骤2:生成DAG(有向无环图)
  • RDD血缘(Lineage) :记录RDD的转换过程(textFileflatMapmapreduceByKey)。

  • 宽依赖(Shuffle)reduceByKey导致Stage划分。

步骤3:划分Stage
  • Stage 0textFileflatMapmap(窄依赖,合并为一个Stage)。

  • Stage 1reduceByKey(宽依赖,单独一个Stage)。

步骤4:提交Task
  • Stage 0 生成多个MapTaskStage 1 生成多个ReduceTask

  • TaskScheduler根据数据本地性(Data Locality)分配Task到Executor。

步骤5:执行与监控
  • Executor执行Task,向Driver汇报状态。

  • 失败Task自动重试(默认重试3次)。


3. 关键概念详解
概念 说明 示例
Job 由行动操作(如collect)触发的完整计算任务 一次collect()生成一个Job
Stage 由一组无Shuffle依赖的Task组成(分为ResultStageShuffleMapStage reduceByKey前为一个Stage
Task Stage中每个分区的计算单元(ShuffleMapTaskResultTask 处理一个分区的数据
Shuffle 跨Stage数据重分布(如groupByKeyjoin reduceByKey触发Shuffle
数据本地性 优先将Task调度到数据所在节点(PROCESS_LOCAL > NODE_LOCAL > ANY 读取HDFS块时优先分配到数据所在节点

4. 调度流程示意图

5. 性能优化点
  1. 减少Shuffle

    • reduceByKey替代groupByKey(提前局部聚合)。

    • 使用Broadcast Join代替Shuffle Join

  2. 调整并行度

    • 通过spark.default.parallelismrepartition()控制分区数。
  3. 数据本地性

    • 确保输入数据与Executor在同一节点(如HDFS副本策略)。
  4. 资源分配

    • 合理设置Executor内存(spark.executor.memory)和CPU核心数(spark.executor.cores)。

6. 容错机制
  • Stage重试:若某个Stage失败,重新提交该Stage的所有Task。

  • Task重试:单个Task失败后,TaskScheduler会重新调度(默认最多3次)。

  • 血缘恢复:若Executor丢失数据,根据RDD血缘重新计算。


总结

Spark的调度机制通过DAG优化、本地性优先和容错设计,实现了高效的大数据处理。理解其原理后,可通过调整分区策略、优化Shuffle操作等手段显著提升性能。

相关推荐
数智顾问1 小时前
(151页PPT)XX集团信息化整体架构规划及ERP方案建议书(附下载方式)
大数据·架构
天行健,君子而铎1 小时前
2026年通用行业数据分类分级产品排名——聚焦成本低、全链路覆盖与高性能计算的优质选型
大数据·数据库·人工智能
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年6月10日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
电商API_180079052472 小时前
Python 实现闲鱼商品列表批量采集,接口异常重试机制搭建
大数据·开发语言·数据库·爬虫·python
Java 码思客3 小时前
【ElasticSearch从入门到架构师】第3章:ES 核心基础概念(架构师必备底层认知)
大数据·elasticsearch·jenkins
德昂信息dataondemand3 小时前
BI项目中的主数据管理:如何确保跨部门数据一致性?
大数据
申通之声3 小时前
以体验和AI重构竞争力,申通要“构建生态共同体”
大数据·网络·人工智能·重构·交通物流
terry6003 小时前
2026图形验证码服务商横向测评|口碑、接入、安全选型全指南
java·大数据·人工智能·web安全·信息与通信·数据库架构
量化君也4 小时前
从回测到全自动实盘交易,全天候策略需要经历哪些改造?
大数据·人工智能·python·算法·金融
KaMeidebaby4 小时前
卡梅德生物技术快报|纳米抗体表达:分子生物学实操指南:噬菌体筛选与纳米抗体表达全流程技术拆解
大数据·人工智能·架构·spark·新浪微博