Flink的部署模式和运行模式

集群角色

Flink提交作业和执行任务,需要几个关键组件:

  • 客户端:代码由客户端获取并作转换,之后提交给Jobmanager

  • Jobmanager就是Flink集群的管事人,对作业进行中央调度管理;当从客户端获取到转换过的作业后会进一步进行处理,然后分发给众多的taskmanager

  • Taskmanager:真正干活的人,数据的处理操作都是它们来做

部署模式

在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。Flink为各种场景提供了不同的部署模式,主要有以下三种:会话模式(Session Mode)、单作业模式(Per-Job Mode)、应用模式(Application Mode)。

它们的区别主要在于:集群的生命周期以及资源的分配方式、以及应用的main方法到底在哪里执行------客户端(Client)还是JobManager。

会话模式(Session Mode)

会话模式其实是最符合常规思维模式。我们需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业。集群启动时所有资源已经确定,所以所有提交的作业会竞争集群中的资源。

会话模式适合单个规模小、执行时间短的大量作业。

单作业模式(Per-job Mode)

会话模式会因为资源共享导致很多问题,所以为了更好地隔离资源,我们可以考虑为每个提交的作业启动一个集群,这就是所谓的单作业模式。

作业完成后集群就会被关闭,所有资源也会释放。

Flink本身无法直接这样运行,需要借助资源管理框架(yarn、K8S)

应用模式(Applicaiton Mode)

上面两种模式应用代码都是在客户端执行,然后提交给jobmanager。这种方式会占用客户端大量网络带宽,加重客户端资源消耗。

解决办法不要客户端了,直接把应用提交给jobmanager,也就意味着我们需要为每一个应用单独启动一个jobmanager,也就是创建一个集群,这个jm只为这一个应用而存在,执行结束后jm也就关闭了。

和单作业模式的区别和联系就是:他们都是提交作业后才创建集群,单作业模式通过客户端提交作业,客户端解析出的每一个作业对应一个集群,而应用模式下,是由jobmanager直接执行应用程序的。

Yarn运行模式

YARN上部署的过程是:客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器。在这些容器上,Flink会部署JobManager和TaskManager的实例,从而启动集群。Flink会根据运行在JobManger上的作业所需要的Slot数量动态分配TaskManager资源。

相关推荐
core5123 小时前
flink cdc各种数据库 jar下载地址
mysql·oracle·flink·jar·oceanbase·cdc
core51218 小时前
flink sink doris
大数据·mysql·flink·doris·存储·sink·过程正常
天冬忘忧1 天前
Flink优化----数据倾斜
大数据·flink
LonelyProgramme1 天前
Flink定时器
大数据·flink
core5121 天前
Flink SQL Cookbook on Zeppelin 部署使用
flink·notebook·zeppelin·示例·手册
道一云黑板报2 天前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
darkdragonking2 天前
OpenEuler 22.03 安装 flink-1.17.2 集群
flink·openeuler
core5122 天前
flink sink kafka
flink·kafka·sink
节点。csn2 天前
flink集群搭建 详细教程
大数据·服务器·flink
goTsHgo2 天前
Flink 的并行度配置低于Kafka 分区数会出现的问题
flink