自画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上执行。

源码流程图

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

相关推荐
清平乐的技术专栏9 小时前
【Flink学习】(五)Flink 并行度与任务链,任务运行核心原理
flink
清平乐的技术专栏14 小时前
【Flink学习】(六)Flink 三大时间语义 + 水位线 Watermark
大数据·学习·flink
清平乐的技术专栏14 小时前
【Flink学习】(一)初识 Flink,大数据实时计算核心认知
大数据·flink
大大大大晴天17 小时前
告别混淆!一文讲透 Flink State Backend 与 Checkpoint Storage
flink
docsz17 小时前
Ambari3.0集成Flink 2.2+Paimon1.4
大数据·flink
清平乐的技术专栏18 小时前
【Flink学习】(七)Flink 状态编程入门,有状态实时计算
大数据·学习·flink
清平乐的技术专栏18 小时前
【Flink学习】(七)Flink 四大窗口机制,实时时间段统计
大数据·学习·flink
清平乐的技术专栏18 小时前
【Flink学习】(九)Flink 容错机制 Checkpoint 与 Savepoint
大数据·学习·flink
清平乐的技术专栏19 小时前
【Flink学习】(三)Flink 数据源详解,主流 Source 数据读取
大数据·flink·linq
清平乐的技术专栏20 小时前
【Flink学习】(四)Flink 常用转换算子,数据流数据处理
大数据·flink