1、per job mode:
对于yarn-per-job模式调度的过程:
1、资源调度:
1、因为是yarn模式,所以客户端会向ResourceManager申请资源,申请容器负责来启动ApplicationManager
2、此时ResourceManager接受到客户端的请求,就会分配一个nodemanager去启动ApplicationMaster,就是Flink中的JobManager
2、任务调度
3、当Application启动过后,客户端就会在本地创建DataFlow并提交到JobManager上
4、JobManager就会根据任务所需要的资源的大小去向ResourceManager上申请资源
5、ResourceManager将空闲的NodeManager分配出来用于启动TaskManager
6、JobManager将Task任务提交到TaskManager上去执行。
2、application mode:
对于application mode模式调度的过程:
1、资源调度:
1、因为是yarn模式,所以客户端会向ResourceManager申请资源,申请容器负责来启动ApplicationManager
2、此时ResourceManager接受到客户端的请求,就会分配一个nodemanager去启动ApplicationMaster,就是Flink中的JobManager
2、任务调度
3、当Application启动过后,此时与yarn-per-job模式不同的是会在JobManager上创建DataFlow
4、JobManager就会根据任务所需要的资源的大小去向ResourceManager上申请资源
5、ResourceManager将空闲的NodeManager分配出来用于启动TaskManager
6、JobManager将Task任务提交到TaskManager上去执行。
在flink中的任务调度是分开,会先去对资源进行调度,然会再去申请资源去执行任务
这两种模式中最重要的区别就是main函数启动的位置不同,Flink任务调度的过程是将本地的代码构建成DataFlow图,然后提交到JobManager上面,对于per job mode来说是在本地创建DataFlow,然而对于application mode是在JobManager上创建DataFlow,这就是二者最主要的区别。