收录于话题
#大数据17
#Flink2
Flink可以对接第三方资源进行弹性伸缩,常见的有Yarn、K8S。Flink对接Yarn有两种模式,分别是session模式和per-job模式。由于生产环境多用per-job模式,因此本文主要分析对接Yarn时per-Job模式的提交过程。
Flink提交application语句:./flink run -m yarn-cluster ./flinkApp.jar
客户端提交命令过程分析
该语句最终有入口类org.apache.flink.client.cli.CliFrontend处理,
通过run()函数触发整个流程,最终是调用PackagedProgram的invokeInteractiveModeForExecution()
从callMainMethod(mainClass,args) ,可以了解这是调用里我们程序的main函数。这里并不是我们程序直接提交的地方,而是我们业务代码程序进行编译的地方。我们的业务代码通过StreamExecutionEnvironment.execute()开始编译,首先会编译成Streamgraph,然后通过executeAsync(streamgraph)-》AbstractJobClusterExecutor.execute()进行异步