大数据Flink进阶(十三):Flink 任务提交模式

文章目录
Flink 任务提交模式
一、会话模式(Session Mode)
二、单作业模式(Per-Job Mode)
三、应用模式(Application Mode)
Flink 任务提交模式
Flink分布式计算框架可以基于多种模式部署,每种部署模式下提交任务都有相应的资源管理方式,例如:Flink可以基于Standalone部署模式、基于Yarn部署模式、基于Kubernetes部署模式运行任务,以上不同的集群部署模式下提交Flink任务会涉及申请资源、各角色交互过程,不同模式申请资源涉及到的角色对象大体相同,下面我们以Flink运行时架构流程为例来总体了解下Flink任务提交后涉及到对象交互流程,以便后续学习不同任务提交模式下任务提交流程。

上图是Flink运行时架构流程,涉及集群启动、任务提交、资源申请分配整个流程,大体步骤如下:
- 启动Flink集群首先会启动JobManager,Standalone集群模式下同时启动TaskManager,该模式资源也就固定;其他集群部署模式会根据提交任务来动态启动TaskManager;
- 当在客户端提交任务后,客户端会将任务转换成JobGraph提交给JobManager;
- JobManager首先启动Dispatcher用于分发作业,运行Flink WebUI提供作业执行信息;
- Dispatcher启动后会启动JobMaster并将JobGraph提交给JobMaster,JobMaster会将JobGraph转换成可执行的ExecutionGraph。
- JobMaster向对应的资源管理器ResourceManager为当前任务申请Slot资源;
- 在Standalone资源管理器中会直接找到启动的TaskManager来申请Slot资源,如果资源不足,那么任务执行失败;
- 其他资源管理器会启动新的TaskManager,新启动的TaskManager会向ResourceManager进行注册资源,然后ResourceManager再向TaskManager申请Slot资源,如果资源不足会启动新的TaskManager来满足资源;
- TaskManager为对应的JobMaster offer Slot资源;
- JobMaster将要执行的task发送到对应的TaskManager上执行,TaskManager之间可以进行数据交换。
以上就是Flink任务提交的整体流程信息,在Flink中任务提交还有多种模式,不同的Flink集群部署模式支持的任务提交模式不同,对应的任务执行流程略有不同,向Flink集群中提交任务有三种任务部署模式,分别如下:
- 会话模式 - Session Mode
- 单作业模式 - Per-Job Mode(过时)
- 应用模式 - Application Mode
以上三种任务提交模式的主要区别在于Flink集群的生命周期不同、资源的分配方式不同以及Flink 应用程序的main方法执行位置(Client客户端/JobManager)不同。
下面分别进行介绍:
一、会话模式(Session Mode)
Session模式下我们首先会启动一个集群,保持一个会话,这个会话中通过客户端提交作业,集群启动时所有的资源都已经确定,所以所有的提交的作业会竞争集群中的资源。这种模式适合单个作业规模小、执行时间短的大量作业。

优势:只需要一个集群,所有作业提交之后都运行在这一个集群中,所有任务共享集群资源,每个任务执行完成后就释放资源。
缺点:因为集群资源是共享的,所以资源不够了,提交新的作业就会失败,如果一个作业发生故障导致TaskManager宕机,那么所有的作业都会受到影响。
二、单作业模式(Per-Job Mode)
为了更好的隔离资源,Per-job模式是每提交一个作业会启动一个集群,集群只为这个作业而生,这种模式下客户端运行应用程序,然后启动集群,作业被提交给JobManager,进而分发给TaskManager执行,作业执行完成之后集群就会关闭,所有资源也会释放。

优势:这种模式下每个作业都有自己的JobManager管理,独享当下这个集群的资源,就算作业发生故障,对应的TaskManager宕机也不影响其他作业。如果一个Application有多个job组成,那么每个job都有自己独立的集群。
缺点:每个作业都在客户端向集群JobManager提交,如果一个时间点大量提交Flink作业会造成客户端占用大量的网络带宽,会加重客户端所在节点的资源消耗。
注意:Per-Job 模式目前只有yarn支持,Per-job模式在Flink1.15中已经被弃用,后续版本可能会完全剔除,替代的是Application模式,主要原因就是Application模式把main方法的初始化放到了集群组件的JobManager中,这样对于客户端来说从性能上有很大优化。
三、应用模式(Application Mode)
Session 模式和Pre-Job模式都是在客户端将作业提交给JobManager,这种方式需要占用大量的网络带宽下载依赖关系并将二进制包发送给JobManager,此外,我们往往提交多个Flink 作业都是在同一个客户端节点,这样更加剧了客户端所在节点的资源消耗,为了降低客户端这种资源消耗,我们可以使用Application Mode。
Application模式与Per-job类似,只是不需要客户端,每个Application提交之后就会启动一个JobManager,也就是创建一个集群,这个JobManager只为执行这一个Flink Application而存在,Application中的多个job都会共用该集群,Application执行结束之后JobManager也就关闭了。这种模式下一个Application会动态创建自己的专属集群(JobManager),所有任务共享该集群,不同Application之间是完全隔离的,在生产环境中建议使用Application模式提交任务。

以上三种Flink任务部署方式生产环境中优先选择Application模式,三者区别总结如下:
- Session 模式是先有Flink集群后再提交任务,任务在客户端提交运行,提交的多个作业共享Flink集群;
- Per-Job模式和Application模式都是提交Flink任务后创建集群;
- Per-Job模式通过客户端提交Flink任务,每个Flink任务对应一个Flink集群,每个任务有很好的资源隔离性;
- Application模式是在JobManager上执行main方法,为每个Flink的Application创建一个Flink集群,如果该Application有多个任务,这些Flink任务共享一个集群。
Flink不同的集群部署模式支持不同的任务提交方式,后续会重点介绍Standalone资源管理和Yarn资源管理任务提交模式的支持。
- 📢博客主页:https://lansonli.blog.csdn.net
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
相关文章:
大数据Flink进阶(十三):Flink 任务提交模式
文章目录 Flink 任务提交模式 一、会话模式(Session Mode) 二、单作业模式(Per-Job Mode) 三、应用模式(Application Mode) Flink 任务提交模式 Flink分布式计算框架可以基于多种模式部署,…...
day11—编程题
文章目录1.第一题1.1题目1.2涉及的相关知识1.3思路1.4解题2.第二题2.1题目2.2思路2.3解题1.第一题 1.1题目 描述: 将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法࿰…...
CentOS下安装crontab及cron表达式解析
目录安装依赖服务启停任务操作参数简要说明1、参数说明2、cron表达式解析(1)定义(2)结构(3)字段含义(4)注意事项(5)常用表达式例子crontab示例结尾安装依赖 # vixie-cron软件包是crontab的主程序 # crontabs软件包是用来安装、卸装、或列举用来驱动crontab守护进程的表格的程序…...
python 绘制训练曲线--基于Numpy.convolve曲线平均滤波
文章目录1 训练曲线--震荡的非常厉害2 基于Numpy.convolve曲线平均滤波3 python 绘制训练曲线 平滑处理--Savitzky-Golay 滤波器曲线平滑4 python 绘制训练曲线--插值法 曲线平滑处理1 训练曲线–震荡的非常厉害 上一篇文章用python自己绘制训练曲线震荡的非常厉害(…...
状态管理插件vuex
概念: 专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 作用: 如果我们使用全局总线要让所有的组件…...
arthas—阿里开源的Java诊断工具
一、arthas简述Arthas 是阿里开源的Java诊断工具。安装在系统所在服务器,有着强大的能力,是一个开发运维神器。主要功能在线热替换代码/代码增强全局视角的性能分析查看方法执行情况,帮助跟踪偶现的bug支持JDK6二、官方资料官方文档的介绍非常…...
Java学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录阅读前请看一下:我是一…...
OpenGL API 之 glVertexAttribPointer
glVertexAttribPointer 定义通用顶点属性数据的数组 C Specification format void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void * pointer); Parameters nametypedescriptionindexGLuint Specifies the inde…...
蓝桥杯真题4
[蓝桥杯 2017 省 AB] 分巧克力 题目描述 儿童节那天有 KKK 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NNN 块巧克力,其中第 iii 块是 HiWiH_i \times W_iHiWi 的方格组成的长方形。 为了公平起见,小明需要从这 NN…...
day02_基本语法
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记Java2307_沐沐霸的博客-CSDN博客 零、复习昨日 一、程序&Java介绍 二、安装JDK&配置环境变量 三、DOS命令 四、第一个程序[重点] 五、Java语言规范[重点] 六、运行机制 七、Typora工具使用 附录:…...
多线程之单例模式
前言 本篇介绍的是wait与notify方法,通过wait来顺序控制执行一些代码,了解单例模式,进行单例模式的简单实现,介绍饿汉模式下出现线程不安全的问题与解决;如有错误,请在评论区指正,让我们一起交…...
2023年绿色建筑国际会议(ICoGB 2023) | Springer独立出版
会议简介 Brief Introduction 2023年绿色建筑国际会议(ICoGB 2023) 会议时间:2023年5月21日-23日 召开地点:瑞典斯德哥尔摩 大会官网:www.icogb.org 2023年绿色建筑国际会议(ICoGB 2023)将围绕“绿色建筑”的最新研究领域而展开,为…...
Python中进程和线程到底有什么区别?
人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。…...
2023美赛春季赛F题思路数据代码论文分享
文章目录赛题思路赛题详情参赛建议(个人见解)选择队友及任务分配问题(重要程度:5星)2023美赛春季赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取…...
念一句咒语 AI 就帮我写一个应用,我人麻了...
原文链接:https://forum.laf.run/d/232 作为人类,我们时常会有自己独特的想法和脑洞大开的创意。然而,这些想法往往因为成本过高而无法实现,毕竟每个人的能力和精力都是有限的,尤其是对于程序员而言,不可能…...
开放平台设计之接口签名认证
前言 当前时代,数据是王道!当我们自己的平台有了足够大的数据量,就有可能诞生一个开放平台宫第三方分析、使用。那么我们怎么去实现对外部调用接口的控制与鉴权呢?这是我们今天的重点——接口签名认证!!&a…...
Vue自创插件发布到npm以及使用方法
Vue自创插件发布到npm以及使用方法 目标:创建my-popup-selector下拉框组件,并发布到npm,效果如下图: 禁用时样式: ①创建vue项目: my-popup-selector ②项目目录结构截图如下: ③在项目根目录…...
合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等实践技术
合成孔径雷达干涉测量(Interferometric Synthetic Aperture Radar, InSAR)技术作为一种新兴的主动式微波遥感技术,凭借其可以穿过大气层,全天时、全天候获取监测目标的形变信息等特性,已在地表形变监测、DEM生成、滑坡…...
Java刷题,蓝桥杯省赛第十二届(第一场)4-------------6
4、相乘题目本题总分:10 分【问题描述】小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后…...
Docker Cgroups——Docker 资源限制背后的技术原理
Docker Cgroups——Docker 资源限制背后的技术原理虽然在容器内部进程只能看到“掩饰”过的视图,但是在宿主机上,它就是一个普通的进程,与其他所有进程之间是平等竞争的关系。这就意味着虽然表面上被隔离了,但它实际上在与其他进程…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
