31

Flink快速了解(2)——3种部署模式

 4 years ago
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.
neoserver,ios ssh client

截至1.12.0版本,Flink有3种集群部署/运行模式:

  • Flink Session Cluster
  • Flink Job Cluster
  • Flink Application Cluster

三种运行模式主要区别在3个方面:

  1. 集群的生命周期
  2. 集群的资源隔离
  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)的程序,也就是包含多个executeexecuteAsync。该模式下,一个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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK