以yarn模式Per-job方式为例概述作业提交执行流程
-
当执行executor() 之后,会首先在本地client 中将代码转化为可以提交的 JobGraph
如果提交为Per-Job模式,则首先需要启动AM, client会首先向资源系统申请资源, 在yarn下即为申请container开启AM, 如果是Session模式的话则不需要这个步骤
-
Yarn分配资源, 开启AM
-
Client将Job提交给Dispatcher
-
Dispatcher 会开启一个新的 JobManager线程
-
JM 向Flink 自己的 Resourcemanager申请slot资源来执行任务
-
RM 向 Yarn申请资源来启动 TaskManger (Session模式跳过此步)
-
Yarn 分配 Container 来启动 taskManger (Session模式跳过此步)
-
Flink 的 RM 向 TM 申请 slot资源来启动 task
-
TM 将待分配的 slot 提供给 JM
-
JM 提交 task, TM 会启动新的线程来执行任务,开始启动后就可以通过 shuffle模块进行 task之间的数据交换