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

相关推荐
岁岁种桃花儿16 小时前
Flink从入门到上天系列第十九篇:Flink当中的容错机制
大数据·flink
D愿你归来仍是少年16 小时前
Apache Spark Real-Time Mode 深度解析:打破微批次壁垒,挑战 Flink 的实时王座
flink·spark·apache
海南java第二人17 小时前
Flink状态后端与容错机制深度剖析:TB级状态下的高可用实战
java·spring·flink
董可伦17 小时前
Flink DataStream2Table 总结
服务器·python·flink
岁岁种桃花儿17 小时前
Flink从入门到上天系列第二十二篇:Flink当中的FlinkSQL
大数据·flink
渣渣盟1 天前
Flink定时器实战:处理时间与事件时间
大数据·flink·scala
૮・ﻌ・2 天前
Nodejs - 02:模块化、npm、yarn、cnpm
前端·npm·node.js·express·yarn·cnpm·包管理工具
岁岁种桃花儿2 天前
Flink从入门到上天系列第十七篇:Flink当中的算子状态
大数据·flink
IT果果日记2 天前
K8S+Dinky+Flink管理你的计算资源
大数据·后端·flink
岁岁种桃花儿3 天前
Flink从入门到上天系列第十六篇:Flink当中的键控状态
大数据·flink