0.背景
关于 Flink 的 Application Mode 自己还比较陌生,像 -d 等参数自己也不熟悉,决定好好总结一下,基于 Flink-1.12.x
1.Session Mode
这个不用多说,也就是起一个 session,然后会有多个程序提交到这一个 session 中。
好处:集群资源仅分配一次,充分利用资源,程序App 启动较快
坏处:可能会连锁式的重启,jobManager 负载大
2.Per-Job Mode
使用的比较多,一个 application 一个 flink cluster
好处: 资源隔离,粒度更细,方便管理单个 job
坏处:当某个机器上有多个 client 时,会有较高的网络负载( 下载 jar 、传输 jar )以及消费大量的 CPU 来执行 main方法
3.Application Mode
Application Mode 与 Per-Job Mode 类似,主要是为了解决 Per-Job Mode 的不足,通过 yarn.provided.lib.dirs
另外 client 是在 JobManager 上执行的,可以避免 带宽、CPU 的热点问题。
并且相比于 Per-Job Mode 来说,更强大,可以提交多个 job
4.总结
Application Mode 与 Per-Job Mode 类似,它主要是为了解决 Per-Job Mode 中由于 client 端导致的 带宽、CPU 问题
Session Mode
5.参考
https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/#application-mode
https://ci.apache.org/projects/flink/flink-docs-stable/deployment/resource-providers/yarn.html