当前位置: 首页 > news >正文

【Flink】部署模式

目录

  • 会话模式
  • 单作业模式
  • 应用模式

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

它们的区别主要在于:集群的生命周期(什么时候创建的集群、什么时候停止的集群)以及资源的分配方式(独享还是共享);以及应用的main方法到底在哪里执行——客户端还是JobManager

会话模式

我们需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业,集群启动时所有资源就都已经确定,所以所有提交的作业会竞争集群中的资源

在这里插入图片描述

会话模式可能出现的问题:

可能出现的问题如下:

  1. 资源竞争与隔离性差
    所有作业共享集群的资源(内存、CPU、网络等),当某个作业占用过多资源(比如数据量突增、逻辑复杂导致计算密集),会挤压其他作业的资源,导致性能下降甚至超时失败。
    缺乏严格的资源隔离,一个作业出现异常(如 OOM、死锁)可能影响整个集群的稳定性,甚至导致所有作业崩溃。
  2. 集群生命周期与作业绑定弱
    会话集群是长期运行的,即使所有作业都结束,集群仍会保持运行(除非手动停止),可能造成资源浪费。
    若集群因故障重启,所有提交到该集群的作业都需要重新提交,无法自动恢复,增加运维成本。
  3. 资源配置不灵活
    集群启动时需要预先分配固定的资源(如 TaskManager 数量、每个 TM 的 slots 数),难以根据作业的实际需求动态调整。
    对于资源需求差异大的作业(比如一个需要大量内存,另一个需要高 CPU),很难通过固定配置同时满足,容易出现资源利用率低或资源不足的问题。

单作业模式

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

在这里插入图片描述
作业完成后,集群就会关闭,所有资源也会释放

这些特性使得单作业模式在生产环境运行更加稳定,所以是实际应用的首选模式

需要注意的是,Flink本身无法直接这样运行,所以单作业模式一般需要借助一些资源管理框架来启动集群,比如YARN、Kubernetes

优点:

  1. 资源隔离性好:每个作业都有独立的 JobManager 和 TaskManager, 资源分配只针对单个作业。不同作业之间不会出现资源竞争问题,一个作业占用大量资源不会影响其他作业运行,也避免了因某个作业异常(如内存溢出、死锁)导致整个集群崩溃,进而影响其他作业的情况 。
  2. 灵活的资源配置:可以根据每个作业的具体需求,定制化配置集群资源。比如,对于计算密集型作业,可以分配更多 CPU 资源;对于处理大量数据的作业,可以配置更多内存和更多的 TaskManager , 从而提高资源利用率。

应用模式

上面两种模式,应用代码都是在客户端上执行,然后由客户端提交给JobManager的,但是这种方式客户端需要占用大量网络带宽,去下载依赖和把二进制数据发送给JobManager;加上很多情况下我们提交作业用的是同一个客户端,就会加重客户端所在节点的资源消耗

所以解决办法就是,我们不要客户端了,直接把应用提交到JobManager上运行,而这也就代表着,我们需要为每一个提交的应用单独启动一个JobManager,也就是创建一个集群,这个JM只为执行这一个应用而存在,执行结束之后JM也就关闭了,这就是所谓的应用模式

在这里插入图片描述

应用模式与单作业模式,都是提交作业之后才创建集群;单作业模式是通过客户端来提交的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由JobManager执行应用程序的

http://www.dtcms.com/a/348654.html

相关文章:

  • Maven项目中settings.xml终极优化指南
  • Excel 表格 - 乘法与除法处理(保留两位小数四舍五入实现、保留两位小数截断实现、添加百分号)
  • 单片机外设(七)RTC时间获取
  • 深入解析Java NIO多路复用原理与性能优化实践指南
  • 重置MySQL数据库的密码指南(Windows/Linux全适配)
  • 基于springboot的理商管理平台设计与实现、java/vue/mvc
  • 得物25年春招-安卓部分笔试题1
  • Linux camera 驱动流程介绍(rgb: ov02k10)(chatgpt version)
  • AlmaLinux 上 Python 3.6 切换到 Python 3.11
  • EP02:【DA】数据分析的价值创造与应用流程
  • 基于SpringBoot的新能源汽车租赁管理系统【2026最新】
  • 【Linux文件系统】Linux文件系统与设备驱动
  • MySQL数据库精研之旅第十一期:打造高效联合查询的实战宝典(二)
  • python中的filter函数
  • 学习做动画1.简易行走
  • 人工智能之数学基础:离散型随机变量
  • 源滚滚React消息通知框架v1.0.2使用教程
  • 管道符在渗透测试与网络安全中的全面应用指南
  • sim2real!so-arm100 机械臂 Mujoco 仿真与实机控制
  • HbuilderX下载与安装
  • python多线程操作,threading库详解(附实例演示)
  • No static resource报错
  • Linux 系统管理核心概念与常用命令速查
  • Baumer高防护相机如何通过Tiny-YOLO单类模型实现人体跌倒检测与跟踪(C#代码UI界面版)
  • [Windows] PDF-XChange Editor Plus官方便携版
  • 鸿蒙中点击完成时延分析
  • 通过python程序将实时监测数据写入excel软件进行保存是常用和非常实用的功能,本文教会大家怎么去搞定此功能
  • LangChain框架入门19: 构建你的第一个 AI 智能体
  • HTTP报文格式详解:从历史演进到现代Web的通信基石
  • Python-鸭子类型