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

相关推荐
Hello.Reader2 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
Hello.Reader6 小时前
Flink 使用 Amazon S3 读写、Checkpoint、插件选择与性能优化
大数据·flink
Hello.Reader7 小时前
Flink 对接 Google Cloud Storage(GCS)读写、Checkpoint、插件安装与生产配置指南
大数据·flink
Hello.Reader7 小时前
Flink Kubernetes HA(高可用)实战原理、前置条件、配置项与数据保留机制
贪心算法·flink·kubernetes
wending-Y9 小时前
记录一次排查Flink一直重启的问题
大数据·flink
Hello.Reader9 小时前
Flink 对接 Azure Blob Storage / ADLS Gen2:wasb:// 与 abfs://(读写、Checkpoint、插件与认证)
flink·flask·azure
Hello.Reader10 小时前
Flink 文件系统通用配置默认文件系统与连接数限制实战
vue.js·flink·npm
Hello.Reader15 小时前
Flink Plugins 机制隔离 ClassLoader、目录结构、FileSystem/Metric Reporter 实战与避坑
大数据·flink
Hello.Reader16 小时前
Flink JobManager 高可用(High Availability)原理、组件、数据生命周期与 JobResultStore 实战
大数据·flink
Hello.Reader16 小时前
Flink 对接阿里云 OSS(Object Storage Service)读写、Checkpoint、插件安装与配置模板
大数据·阿里云·flink