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

[flink]部署模式

部署模式

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

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

一、会话模式

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

会话模式比较适合于单个规模小、执行时间短的大量作业。

二、应用模式

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

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

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

三、单作业模式(官网已经标记为过时) 应用模式解决了单作业模式的痛点

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

作业完成后,集群就会关闭,所有资源也会释放。

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

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

相关文章:

  • 【网络安全】玲珑安全第四期
  • 打卡第34天------动态规划-01背包
  • 【practise】数组中出现次数超过一半的数字
  • ABAP小白开发操作手册+(九)ABAP调用http
  • 泛型类型,存在确定得属性,剩下的属性都是通过泛型传进来
  • 【数据结构的——红黑树】
  • Javascript——宏任务微任务与JavaScript引擎的事件循环(Event Loop)和任务调度
  • C语言求平方和倒数
  • 【区块链+社会公益】第一反应互助急救链 | FISCO BCOS应用案例
  • leetcode50. Pow(x, n),快速幂算法
  • Java 代码详解:删除链表中的倒数第 N 个节点
  • JavaScript 数组迭代
  • WPF篇(5)- Border控件(边框布局)+GridSplitter分割窗口
  • Linux虚拟化技术的演进:Xen与KVM的历程与影响
  • 【Kubernetes】k8s集群之Pod容器资源限制和三种探针
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [译]Python中的类属性与实例属性的区别
  • Apache Pulsar 2.1 重磅发布
  • Druid 在有赞的实践
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • MYSQL 的 IF 函数
  • MySQL几个简单SQL的优化
  • SegmentFault 2015 Top Rank
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue 个人积累(使用工具,组件)
  • vue2.0项目引入element-ui
  • vue中实现单选
  • 程序员该如何有效的找工作?
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 回顾2016
  • 计算机在识别图像时“看到”了什么?
  • 排序(1):冒泡排序
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 与 ConTeXt MkIV 官方文档的接驳
  • 在weex里面使用chart图表
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​力扣解法汇总946-验证栈序列
  • ​水经微图Web1.5.0版即将上线
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #微信小程序(布局、渲染层基础知识)
  • (03)光刻——半导体电路的绘制
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十八)三元表达式和列表解析
  • (转)nsfocus-绿盟科技笔试题目
  • (转)Scala的“=”符号简介
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .gitignore文件忽略的内容不生效问题解决
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core 项目指定SDK版本
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 材料检测系统崩溃分析
  • .NET 快速重构概要1