Flink集群部署模式

Flink集群部署模式,第1张

根据集群的生命周期、资源隔离方式和应用程序的main()方法执行位置(client或者JobManager)可以将集群部署模式分为:Flink Session Cluster(session mode)、Flink Job Cluster(per-job mode) 和Flink Application Cluster(application mode)三类。

Flink Session Cluster集群部署模式也称为session mode。该模式集群会预先启动、长时间运行,并且能够接收多个job提交运行。也就是提交到集群的job共享一套flink runtime cluster(JobManager和TaskManager)。

该模式特点如下:

Flink Job Cluster集群部署模式又称为per-job mode。该模式与Job绑定,集群管理器会为每个Job启动一个flink runtime cluster(JobManager和TaskManager)。Client会首先向集群管理器请求资源来启动JobManager,并将job提交给其内部的Dispatcher,TaskManager根据job的资源请求延迟分配启动的。

该模式特点如下:

NOTE: Flink Job Cluster模式不支持部署在Kubernetes上。

Flink Application Cluster集群部署模式又称为Application mode。该模式集群属于专属集群模式,只会执行一个Flink Application中的job,集群管理器为每个Flink Application启动一个flink runtime cluster(JobManager和TaskManager)。并且应用程序的main方法是运行在Cluster中,而不是client上。

该模式可以看做是对per-job模式和session模式的优化部署模式。集群执行job粒度上,相较前两者找到了更好的一个隔离点,并且减轻了Client的负载。

该模式特点如下:

这种模式我们一般是在用IDE调试程序的时候用到,当我们在本地用IDE开发程序的时候,执行main方法,flink会在本地启动一个包含jobmanager和taskmanager的进程的minicluster,程序运行完成之后,这个cluster进程退出。

这种模式就是直接在物理机上启动flink集群。我们可以通过 {FLINK_HOME}/conf/flink-conf.yaml.

此外,我们可以用 ${FLINK_HOME}/bin/taskmanager.sh start 再启动一个taskmanager。

这时我们通过jps命令查看一下启动的进程

我们看到这时候启动了两个taskmanager

这种部署模式对flink集群的资源管理是flink自己维护的,在生产环境下用的不多,所以我们也不做过多描述.

启动集群的命令如下:

这个命令有很多的参数,可以在后面加 -h 看下,我这里着重介绍一下 -d参数。

加上-d之后,指的是隔离模式,也就是启动之后和客户端就断了联系,如果要停止集群,需要通过yarn application -kill {applicationId} 来停止集群.

提交成功之后,我们会在yarn的管理页面看到一个类似的任务

这个启动命令也有很多的参数,我就不一一讲解了,我用大白话讲讲我认为最核心的几个参数。

第二,通过命令行来停止:

这个时候需要指定yarn applicationId和flink job id

第三,通过程序来停止

https://blog.csdn.net/zhangjun5965/article/details/106820591

如果我们做了一个实时平台这样的系统,就不能手工通过命令行来停止了,可以调用相应的api来停止任务.

这种模式是在flink 1.11 版本中提供的,flink的yarn per job模式启动的时候会把本地的flink的jar和用户的jar都上传到hdfs,这个过程非常的消耗网络的带宽,如果同时有多个人提交任务的话,那么对网络的影响就更大,此外,每次提交任务的时候flink的jar包是一样的,也不用每次都拷来拷去的,所以flink提供了一种新的application模式,可以把flink的jar和用户的jar都预先放到hdfs上,这样就能省去yarn per job模式提交任务的jar包拷贝工作,节省了带宽,加快了提交任务的速度.

具体的命令如下:

-yD yarn.provided.lib.dirs :用来指定存放flink jar的目录

最后一个参数是用户的jar在hdfs上的路径.

说一下题外话,其实我们当时在做实时平台的时候,这个提交慢的问题我也发现了,当时我的想法是先启动一个flink集群,然后再把程序的JobGraph提交到这个yarn集群,不过后来嘛,由于 * %%$$# ^&的原因,也没弄.

对于把服务容器化,也越来越成为一种趋势,所以k8s部署也越来越受大家的重视。 对于k8s部署flink这块说实话我研究的不是很深,也就不多说了。

我们还可以将程序部署到mesos或者使用docker,这个我没有去实际调研过,但是从flink的邮件列表大家沟通的问题或者是网上查到的资料看,这种模式部署应该不多,所以这里就不详细描述了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/656023.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-24
下一篇2023-07-24

发表评论

登录后才能评论

评论列表(0条)

    保存