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

相关推荐
给我整点护发素3 小时前
Flink执行sql时报错
大数据·sql·flink
好记性+烂笔头16 小时前
Flink_DataStreamAPI_输出算子Sink
flink
我的K84091 天前
Flink整合Hive、Mysql、Hbase、Kafka
hive·mysql·flink
宝哥大数据2 天前
Flink Job更新和恢复
大数据·flink
LiWang1123583 天前
FlinkPipelineComposer 详解
flink
Denny辉3 天前
Flink使用SQL Gateway提交SQL Job到远程集群
sql·flink·gateway
武子康3 天前
大数据-218 Prometheus 插件 exporter 与 pushgateway 配置使用 监控服务 使用场景
大数据·hive·hadoop·flink·spark·prometheus
我的K84094 天前
Flink独立集群+Flink整合yarn
大数据·flink
Tech Synapse4 天前
用Java实现samza转换成flink
java·开发语言·flink
宝哥大数据4 天前
flink+kafka 如何保证精准一次
flink·kafka