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资源。

相关推荐
HumoChen9914 小时前
MySQL tinyint(1)类型数据在经过flink cdc同步到doris后只有0/1问题定位与解决
数据库·mysql·flink
武子康1 天前
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
java·大数据·分布式·clickhouse·flink·apache
goTsHgo1 天前
通过 Flink 的火焰图定位反压
大数据·分布式·flink
大数据小墨1 天前
Dinky教程--Flink CDC pipline整库同步Doris
大数据·flink
goTsHgo2 天前
flink 的 Barrier 数据结构
大数据·分布式·flink
全栈弟弟3 天前
数据科学基石:解析属性类型体系——从标称到比率,全面洞察数据分类机制
大数据·数据仓库·数据挖掘·flink·spark
冬至喵喵3 天前
Flink架构
笔记·学习·flink
docsz3 天前
Flink和Spark的区别
大数据·flink·spark
武子康3 天前
大数据-147 Apache Kudu 常用 Java API 增删改查
java·大数据·开发语言·sql·clickhouse·flink·apache
HHoao3 天前
Flink Task 日志文件隔离
java·flink·dubbo