Flink 集群部署模式

文章目录

  • 前言
  • 一、会话模式(Session Mode)
  • 二、单作业模式(Per-Job Mode)
  • 三、应用模式(Application Mode)


前言

Flink支持多种集群部署模式,以满足不同场景和需求。以下是Flink的主要集群部署模式:

  1. 会话模式(Session Mode)

    • 在会话模式下,用户首先启动一个长期运行的Flink集群,然后在这个会话中提交多个作业。
    • 集群资源在启动时就已经确定,提交的作业会竞争集群中的资源,直到作业运行完毕释放资源。
    • 会话模式适合执行大量规模小、执行时间短的作业。
    • 由于集群资源是共享的,因此可能存在资源争用的问题。
  2. 单作业模式(Per-Job Mode)

    • 在单作业模式下,每个作业都会启动一个独立的Flink集群,作业完成后集群也会关闭。
    • 这种模式为每个作业提供了资源隔离,避免了资源争用的问题。
    • 由于每个作业都需要启动和关闭集群,因此在处理大量作业时可能会产生额外的开销。
    • 单作业模式通常与第三方资源调度器(如YARN、Kubernetes等)结合使用,以便更有效地管理集群资源。
  3. 应用模式(Application Mode)

    • 应用模式与单作业模式类似,也是为每个作业启动一个独立的Flink集群。
    • 与单作业模式不同的是,在应用模式下,作业的main方法直接在JobManager上执行,而不是在客户端执行。
    • 这种模式简化了作业的提交过程,并减少了客户端与JobManager之间的通信开销。
    • 应用模式同样需要依赖第三方资源调度器来管理集群资源。

在选择Flink的集群部署模式时,需要根据实际的应用场景和需求进行权衡。例如,对于需要频繁提交大量小作业的场景,会话模式可能是一个合适的选择;而对于需要严格资源隔离和稳定性保障的场景,单作业模式或应用模式可能更为合适。同时,还需要考虑与现有资源调度器的集成和兼容性。


一、会话模式(Session Mode)

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
在 Apache Flink 的会话模式(Session mode)中,假设已经存在一个预先配置好的运行中的集群,该集群提供必要的资源来执行提交的应用程序。在这种模式下,多个应用程序共享同一个集群的资源,这意味着它们会竞争 CPU、内存和其他资源。

以下是会话模式的优势和劣势,供您在决策时考虑:

优势:

  1. 资源高效性: 对于每个提交的作业都启动一个完整的集群会消耗大量资源。在会话模式下,您避免了这种开销,因为可以重复使用已运行集群的资源。

  2. 简化管理: 有一个长期运行的集群意味着您不需要为每个作业频繁地启动和关闭集群。这简化了集群管理,减少了操作复杂性。

劣势:

  1. 资源竞争: 由于所有作业共享同一个集群的资源,它们会争夺 CPU、内存和网络带宽。这可能导致性能下降,如果某个作业消耗了不成比例的资源。

  2. 故障传播: 如果一个作业行为异常或导致 TaskManager 失败,它可能会影响在同一 TaskManager 上运行的其他作业。这可能导致故障级联和大规模的恢复过程,这个过程可能非常消耗资源且耗时。

  3. JobManager 负载增加: JobManager 负责管理和协调集群中运行的所有作业。多个作业同时运行时,JobManager 会面临增加的负载,这可能影响其性能和可伸缩性。

  4. 隔离性有限: 会话模式提供的作业之间的隔离性有限。一个作业的问题可能会潜在地影响在相同集群中运行的其他作业。

在考虑会话模式时,重要的是要评估您的具体用例和需求。如果您有一组稳定的作业,它们不需要严格的资源隔离,并且您希望最大化资源利用率,那么会话模式可能是一个不错的选择。然而,如果您需要更好的隔离性、容错性或对资源分配的更精细控制,您可能想考虑其他部署模式,如单作业模式(Per-Job)或应用模式(Application mode)。

此外,值得注意的是,Flink 提供了配置选项来减轻会话模式的一些劣势。例如,您可以配置资源配额或根据作业的重要性设置优先级,以确保公平的资源分配。您还可以使用外部监控和告警工具来快速检测和响应故障。

二、单作业模式(Per-Job Mode)

在这里插入图片描述
为了提供更好的资源隔离保证,单作业模式(Per-Job mode)使用可用的资源提供者框架(如YARN、Kubernetes)为每个提交的作业启动一个集群。这个集群仅对该作业可用。作业完成后,集群会被销毁,任何剩余的资源(如文件等)也会被清理。这提供了更好的资源隔离,因为行为异常的作业只能导致其自己的 TaskManager 崩溃。此外,由于每个作业都有一个 JobManager,因此它将记录工作的负载分散到了多个 JobManager 上。出于这些原因,单作业资源分配模型是许多生产环境首选的模式。

三、应用模式(Application Mode)

在这里插入图片描述
应用模式(Application Mode)#

在所有的其他模式中,应用程序的 main() 方法都是在客户端执行的。这个过程包括在本地下载应用程序的依赖项,执行 main() 来提取 Flink 运行时可以理解的应用程序表示(即 JobGraph),并将依赖项和 JobGraph 发送到集群。这使得客户端成为了一个大量消耗资源的实体,因为它可能需要大量的网络带宽来下载依赖项和向集群发送二进制文件,以及 CPU 周期来执行 main()。当客户端在多用户之间共享时,这个问题可能会更加明显。

基于这一观察,应用模式为每个提交的应用程序创建一个集群,但这次,应用程序的 main() 方法是在 JobManager 上执行的。为每个应用程序创建一个集群可以看作是创建一个会话集群,该集群仅由特定应用程序的作业共享,并在应用程序完成后销毁。通过这种架构,应用模式提供了与单作业模式相同的资源隔离和负载均衡保证,但粒度是整个应用程序。在 JobManager 上执行 main() 方法不仅节省了所需的 CPU 周期,还节省了本地下载依赖项所需的带宽。此外,由于每个应用程序都有一个 JobManager,它还允许在集群中更均衡地分配下载应用程序依赖项的网络负载。

在应用模式中,main() 是在集群上执行的,而不是在客户端上,如其他模式那样。这可能对您的代码产生影响,例如,您使用 registerCachedFile() 在环境中注册的任何路径都必须可由您的应用程序的 JobManager 访问。

与单作业模式相比,应用模式允许提交由多个作业组成的应用程序。作业的执行顺序不受部署模式的影响,而是由用来启动作业的调用方式决定。使用阻塞式的 execute() 方法会建立一个顺序,并导致“下一个”作业的执行被推迟,直到“当前”作业完成。而使用非阻塞式的 executeAsync() 方法会导致“下一个”作业在“当前”作业完成之前就开始执行。

应用模式支持多 execute() 应用程序,但在这种情况下不支持高可用性(High-Availability)。应用模式中的高可用性仅支持单 execute() 应用程序。

此外,在应用模式中,如果多个正在运行的作业中的任何一个(例如,使用 executeAsync() 提交的)被取消,所有作业都将停止,并且 JobManager 将关闭。正常的作业完成(由源关闭引起)是被支持的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2869136.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Rust学习02:推荐一本入门书,免费的

都说Rust的学习曲线很陡峭,试过才知雀实不容易。 先说我的基础,非科班,自学Python,写过几个小程序。 我买书从来不扣扣嗖嗖的,所以先啃了几本Rust的入门书,包括: Tim McNamara的《Rust实战》&am…

javaEE——线程的等待和结束

文章目录 Thread 类及常见方法启动一个线程中断一个线程变量型中断调用 interrupt() 方法来通知观察标志位是否被清除 等待一个线程获取当前线程引用休眠当前线程 线程的状态观察线程的所有状态观察 1: 关注 NEW 、 RUNNABLE 、 TERMINATED 状态的切换 多线程带来的风险为什么会…

基于SpringBoot框架实现的B2B平台的医疗病历交互系统

采用技术 基于SpringBoot框架实现的B2B平台的医疗病历交互系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBootMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员角色 医院管理 医院注册 医院文…

pytorch 入门基础知识一(Pytorch 01)

一 深度学习基础相关 深度学习三个主要的方向:计算机视觉,自然语言,语音识别。 机器学习核心组件:1 数据集(data),2 前向传播的model(net),3 目标函数(loss), 4 调整模型参数和优化函数的算法…

C#混淆心得

C#混淆心得 近期遇到混淆C#代码的需求,在网上找了很多办法,在此记录一下。 混淆的本质就是让代码变丑,让别人看不懂。 为什么要混淆: 1.保护核心代码 可以在一定程度上避免别人偷代码,从而保护重要的部分&#xf…

vscode jupyter 如何关闭声音

网上之前搜的zen模式失败 仅仅降低sound失败 #以下是成功方式: 首先确保user和remote的声音都是0: 然后把user和remote的以下设置都设置为off就行了! 具体操作参考 https://stackoverflow.com/questions/54173462/how-to-turn-off-or-on-so…

传输层/UDP/TCP协议

再谈端口号 TCP/IP协议用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”,这样一个五元组来标识一个通信(可以用netstat -n来查看)。 端口号的划分和知名端口号 我们之前就说过&am…

综合知识篇05-设计模式考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…

【Java】容器|Set、List、Map及常用API

目录 一、概述 二、List 1、List的常用API 2、ArrayList 3、List遍历 三、Set 1、Set的常用方法: 2、HashSet 3、遍历集合: 四、Map 1、Map常用API 2、HashMap 3、遍历Map 五、迭代器 一、概述 在Java中所有的容器都属于Collection接口下的内容 1…

如何监控用户对网站的操作行为?

需求: 1、对所有用户的操作进行监控,包括用户行为的录制 2、通过用户操作热度地图,来监控每个功能的使用频率,从而来决策产品的下一步迭代 一、浏览器自带的录频方法 MediaDevices.getUserMedia() 二、html2canvas页面截屏方法 …

2022年安徽省职业院校技能大赛 (高职组)“云计算”赛项样卷

#需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! 第一场次:私有云(5…

cool 中的Midway ----node.js的TypeORM的使用

1.介绍 TypeORM | Midway TypeORM 是 node.js 现有社区最成熟的对象关系映射器(ORM )。本文介绍如何在 Midway 中使用 TypeORM 相关信息: 描述可用于标准项目✅可用于 Serverless✅可用于一体化✅包含独立主框架❌包含独立日志❌ 和老写…

展开说说:Android之SharedPreferences

SharedPreferences 是一种轻量级的数据持久化存储机制。以key/value键值对形式存储在xml文件,用于保存一些应用程序数据。保存在 /data/data/PACKAGE_NAME/shared_prefs/xxx.Xml文件。 SharedPreferences 只能存储string,int,float&#xff…

F5怎么样?保障AI服务的安全性和交付

伴随着人工智能时代的快速发展,AI已成为企业数字化转型的得力工具,比如为用户提供更好的服务,降低企业成本等。与此同时,AI技术的应用也会带来应用安全等方面的新风险,可见其有着双刃剑效应。作为一家提供多云应用安全…

【时事篇-05-03】20240316 一笔145元拆分成3笔存款存入(排除有相似性的十位数字)

背景需求 前文提到,每笔都存一样的数目,容易被银行识别违法, 【时事篇-05-01】20240112 150元存46只货币基金-CSDN博客文章浏览阅读580次,点赞15次,收藏11次。【时事篇-05-01】20240112 150元存46只货币基金https://…

LCD屏的应用

一、LCD屏应用 Linux下一切皆文件,我们的LCD屏再系统中也是一个文件,设备文件:/dev/fb0。 如果要在LCD屏显示数据,那我们就可以把数据写入LCD屏的设备文件。 1.显示颜色块 LCD屏分辨:800*480 像素 32位:说明一个像…

创新指南|制药行业如何拥抱生成式AI在新药发现与开发中突破获益

生成式AI在药物发现中的应用可加速药物研发过程,并可能降低成本。通过利用GenAI,制药公司能在早期药物发现和开发中实现更快的成果,这包括从目标识别、验证,到优化的多个环节。 AI有潜力在药物筛选和优先排序、目标识别及验证、药…

书客护眼落地灯销量火爆,售罄、补货、又断货、再补货!又成断货王!

今日,备受关注的书客Sun护眼大路灯在市场上掀起了一股抢购热潮,作为近年来照明领域中最大的黑马品牌,始终坚持并最求技术创新的书客品牌,在近日发布全新系列落地护眼台灯后,不仅备受消费者青睐,更是成为了新…

spacy进行简单的自然语言处理的学习

自然语言处理基本概念 概念:自然语言处理,是让机器理解人的语言的过程。 作用:通过使用自然语言处理,机器可以理解人的语言,从而进行语义分析,例如:从一句话中判断喜怒哀乐;从一段文…

MongoDB——linux中yum命令安装及配置

一、创建mongodb-org-3.4.repo文件 vi /etc/yum.repos.d/mongodb-org-3.4.repo 将下面内容添加到创建的文件中 [mongodb-org-3.4] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.4/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://www…