flink部署模式
\X001 Flink架构
\X002 flink部署模式
flink部署模式分为3种:
- application模式
app的main()运行在jobmanger上。只能运行一个Job,job运行完后jobmanager关闭了。 - preJob模式
app的main()运行在client上,可以运行多个Job,AsyncJob不需要等待上一个Job完成,就可以直接开始运行,所有Job完成后,jobmanger就关闭了。 - session模式
app的main()运行在client上,jobmanger会一直存在。所有的job共享同一套flink集群实例。
讲到这里,大家会疑问,app的mian()运行在jobmanger和client上有啥区别?其实这个区别还挺大:
我们在main()里面写的逻辑要转化为DAGS图和其他flink-runtime能理解的成分然后发送给jobmanger,然后还需要将我们代码的依赖jar包,通过IO传送到我们的集群的每个节点,才能正常在flink上运行。换句话说,如果main()运行在client上,这些工作是client完成,如果main()运行在jobmanger上,这些工作通过jobmanger完成,而jobmanger身处集群内,而client身处集群外。
总的来说,以上3种部署模式的主要不同点:
- 集群的生命周期和资源的隔离
- main()运行的位置,是client还是jobmanger