【Spark】超详细的Spark任务提交流程图

在这里插入图片描述

### Apache Spark任务执行流程 Apache Spark 是一种分布式计算框架,其任务执行流程涉及多个阶段和组件之间的交互。以下是 Spark 任务执行的主要流程: 1. **应用程序提交** 应用程序通过 `spark-submit` 命令或其他方式提交给集群管理器(如 YARN 或 Standalone)。集群管理器负责分配资源并启动驱动程序进程[^1]。 2. **创建 DAG (有向无环图)** 驱动程序解析应用逻辑,构建一个由 RDDs 和转换操作组成的 DAG 图。这个过程会分析数据流以及各个算子间的依赖关系。 3. **Stage 划分** 根据宽窄依赖特性将整个DAG切分成不同的 Stage 。每个 stage 内部只包含窄依赖的操作;而不同 stages 之间存在 shuffle 操作作为边界。 4. **TaskSet 提交** 对于每一个 stage ,Spark 将其中的具体工作拆解成若干个独立的任务(Task),并将这些任务打包成 TaskSets 发送给调度模块(Scheduler)。 5. **任务调度与执行** 调度模块根据可用节点情况来决定如何分布运行这些 Tasks,并通知对应的 Executor 来真正地去执行它们。Executors 执行完之后返回结果给 Driver Program。 6. **Shuffle 数据传输** 如果当前stage中有shuffle操作,则需要等待前序stages完成后才能开始读取中间文件中的分区数据来进行下一步处理。 7. **Action 触发最终输出** 当所有的 Transformation 完成后,遇到 Action 类型的操作才会触发真正的计算过程并向外部写出最后的结果集。 8. **清理释放资源** 计算结束后,Driver 程序会回收所有占用过的内存和其他临时存储空间,关闭连接等收尾动作。 ```mermaid graph TD; A[应用程序提交] --> B{创建 DAG}; B --> C[Stage 划分]; C --> D[TaskSet 提交]; D --> E[任务调度与执行]; E --> F{是否存在 Shuffle?}; F -->|Yes| G[Shuffle 数据传输]; F -->|No| H(Action 触发最终输出); G --> H; H --> I(清理释放资源); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值