

Flink快速了解(2)——3种部署模式
source link: https://niyanchun.com/flink-quick-learning-deployment-mode.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

截至1.12.0版本,Flink有3种集群部署/运行模式:
- Flink Session Cluster
- Flink Job Cluster
- Flink Application Cluster
三种运行模式主要区别在3个方面:
- 集群的生命周期
- 集群的资源隔离
main()
方法在Client侧执行还是在集群侧执行
下面分别介绍一下。
Flink Session Cluster
该模式就是先有一个已经在运行的Flink集群(至少有JobManager),然后我们把任务提交上去,所有的任务都运行在这一个集群上面,典型的场景就是Standalone模式静态部署的普通集群。此时:
- 集群生命周期:独立于任务,任务的开始、结束等不影响集群的生命周期。
- 集群的资源隔离:所有任务都运行在一个集群上面,所以隔离性差。Flink的Slot仅能隔离内存,并不能隔离CPU资源。而且一个任务如果把TaskManager搞挂了,那上面的其它任务也会受牵连。
main()
方法在Client侧执行。
该模式以前也称为"Flink Cluster in session mode".
Flink Job Cluster
该模式就是每个Job动态创建一个属于自己专有的集群,此时:
- 集群生命周期:与任务生命周期同步,随任务运行而创建,随任务结束而消亡。
- 集群的资源隔离:任务独占集群,隔离性最好。
main()
方法在Client侧执行。
该模式以前也称为"Flink Cluster in per-job mode".
Flink Application Cluster
一个Application指包含一个或多个任务(Job)的程序,也就是包含多个execute
或executeAsync
。该模式下,一个Application动态创建一个属于自己专有的集群,Application内的所有任务共享该集群,很显然这是一种介于Session Cluster和Job Cluster之间的模式:不同Application之间是完全隔离的,类似Job Cluster;但一个Application内的任务是不隔离的,类似于Session Cluster。此时:
- 集群生命周期:与Application生命周期同步,随Application运行而创建,随Application结束而消亡。
- 集群的资源隔离:Application之间隔离,Application内的所有任务共享集群,隔离性一般。
main()
方法在集群侧执行。
该模式以前也称为"Flink Cluster in session mode".
三种模式对比
其实也没啥对比的,各自的优缺点非常简单明显。要对比的话,主要的对比点就是资源隔离、main()
方法的执行位置、集群是否是动态创建三个方面。
- 就资源隔离性而言,Flink Job Cluster、Flink Application Cluster、Flink Session Cluster隔离性依次降低。
- Flink Application Cluster的
main()
方法是在集群侧的JobManager中执行的,其它两种模式是在Client端执行的。这个对于一些比较大型或复杂的应用来说区别还是挺大的,毕竟集群侧的资源一般是比较充足的,而且可以负载均衡。Client测去执行main()
方法可能会是一个瓶颈,特别是有多个人共享这个Client的时候。 - 集群动态创建这个不是所有模式都支持的,一般只有依赖Kubernetes、YARN之类的模式才可以。动态创建的好处就是动态扩展会比较好,特别是横向的扩展。但弊端是每次提交任务都要先创建一个集群,对于那些执行时间短、频次高的任务可能就不是特别合适。
Recommend
-
50
什么是Flink Apache Flink是一个分布式大数据处理引擎,可以对 有限数据流 和 无限数据流 进行 有...
-
15
本文讲一些比较八股的概念性东西,不是特别实用,但对于理解任务的运行非常有帮助。先做个自我检测:你知道Flink的Job指什么吗?Task呢?Subtask呢?这些和JVM Thread的对应关系是什么?你能估计出你的应用跑起来以后大概会产生多少个Thread吗?你知道你的应用...
-
13
本文介绍Flink任务流转过程中涉及的图,知道这些可以更好的了解Flink的运行流程。如上图,Flink中有4种图:StreamGraph、JobGraph、ExecutionGraph、Physic...
-
13
Flink快速了解(1)——架构 2020-12-19 大数据
-
12
Flink快速了解(0)——开篇说明 2020-12-18 大数据
-
15
Flink快速了解(4)——NativeKubernetes&HA Flink的1.12.0版本前段时间发布了,又带来了很多新特性,其中有两个跟容器化相关的特性:
-
9
Flink快速了解(6)——常用算子(Operator) 2021-03-28 大数据
-
7
Flink快速了解(7)——Async I/O 2021-04-03 大数据
-
3
3种状态+5种模式,从UX角度分析加载设计-经验/观点-UICN用户体验设计平台 3种状态+5种模式,从UX角度分析加载设计 ...
-
8
集群 standalone 安装部署 下载安装包 下载页面:https://archive.apache.org/dist/flink/flink-1.7.2/ 我...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK