自画flink、spark源码学习流程大图分享

以前写过flink专栏,分了好几篇,且源码流程图也被拆分了。这次直接分享spark和flink从提交命令行到完整走完案例的源码流程图。

spark

spark执行流程简述如下:

(1)用户输入运行任务的命令行;

(2)执行SparkSubmit中的main,解析用户输入命令行参数;

(3)准备提交环境,创建YarnClusterApplication并启动;

(4)创建Yarn的客户端Client与YarnCluster通信;

(5)通过YarnClinet向YarnCluster中的ResourceManager提交应用程序;

(6)ResourceManager让某个NodeManager启动ApplicationMaster;

(7)ApplicationMaster创建一个YarnRMClient用于与ResourceManager通信;

(8)在ApplicationMaster中Driver线程;

(9)Driver线程执行用户编写程序,此时其他申请资源等操作被阻塞;

(10)直到执行用户编写程序初始化完SparkContext,这时候Driver线程也陷入阻塞,申请资源等操作解除阻塞继续运行;

(11)ApplicationMaster向ResourceManager注册自己并申请资源,ResourceManager返回其资源可用列表;

(12)创建nmClient用于与其他NodeManager通信;

(13)让其他NodeManager启动YarnCoarseGrainedExecutorBackend,即用于通信的Executor进程;

(14)与Driver通信,请求注册Executor;

(15)Driver使用SparkContext中的CoarseGrainedSchedulerBackend接收注册消息,进行一些设置后返回注册成功响应;

(16)收到注册成功响应后创建Executor计算对象并发送已启动的消息给Driver;

(17)经过一系列操作后,即申请资源完毕,executor创建准备好了,Driver线程恢复运行继续执行业务逻辑代码;

(18)首先建立各RDD之间的依赖,父RDD的分区最多被子RDD的一个分区使用则为NarrowDependency;

(19)同一个父RDD的分区被多个子RDD的分区依赖,则为ShuffleDependency;

(20)从后往前,碰到ShuffleDependency就划分创建阶段;

(21)以每个阶段的最后一个RDD的分区数量来切分任务数量;

(22)调度算法分为FIFO和FAIR,选择一种调度算法对切分得到的任务进行排序按照本地级别高低提供给各个节点的executor执行。

flink执行流程简述如下:

1.输入运行任务脚本

2.解析参数CliFrontendParser

3.选择Cli,例如FlinkYarnSessionCli

4.执行用户代码execute

5.生成streamGraph

6.生成JobGraph

7.上传jar包和配置

8.封装提交参数和启动AM的命令

9.任务提交给集群submitApplication

10.启动ApplicationMaster

11.AM创建并启动Dispatcher

12.Dispatcher启动JobMaster

13.AM启动ResourceManager,其中包含SlotManager

14.SlotManager实时检查所需slot是否足够

15.JobMaster生成ExecutionGraph

16.JobMaster中的SlotPool像SlotManager注册、请求slot

17.flink内部rm向yarn的rm申请资源

18.yarn的rm在某个nm上启动TaskManager

19.runTaskManager启动TaskExecutor

20.TaskExecutor向slotManager注册slot,slotManager分配好slot返回通知。

20.TaskExecutor提供slot给slotPool

21.JobMaster最后submitTask提交任务在slot上执行。

源码流程图

文件较大,以资源形式分享

相关推荐
棣廷1 天前
初识Spark Core
大数据·分布式·spark
Flynn Liang3 天前
物联网时序数据乱序问题全链路治理:从设备到存储的五层实战(附 Flink/Kafka/IoTDB 配置级代码)
flink·kafka·iot·iotdb·emqx·乱序·时序数据
欢醉3 天前
Flink实时同步Oracle到StarRocks的几个踩坑经验分享
starrocks·oracle·flink
用户3610588626124 天前
Flink 注册Slot源码深度剖析:从TaskManager注册到Slot状态机的完整链路
大数据·flink
阿里云大数据AI技术4 天前
实时看、持续记、及时说,央视体育携手阿里云 Flink 打造大型赛事实时 AI 解说Agent
人工智能·flink
磁场转动100万匹4 天前
Spark Core 核心原理:从 RDD 到分布式计算
大数据·分布式·spark
阿里云大数据AI技术5 天前
阿里云Flink + Fluss年度发布:Streaming Agent 与湖流一体
人工智能·flink·agent
ha_lydms6 天前
AnalyticDB MySQL 技术架构
大数据·hadoop·mysql·adb·spark·dataworks·1024程序员节
红海云6 天前
两台DGX Spark部署DeepSeek的实战边界
大数据·分布式·spark
用户3610588626127 天前
Flink Dispatcher启动流程源码深度剖析:从ClusterEntrypoint到JobMaster启动的完整链路
大数据·flink