Flink(二)【Flink 部署模式】

news2025/1/31 7:44:38

前言

        今天是Flink学习的第二天,我的心情异常的复杂哈哈哈(苦笑),学习上还是比较顺利的,感情上我并不擅长,所以心情波动大在所难免。害,至少还有学习让我不被各种糟糕琐碎的日常生活里的人和事所影响。

        不管是学习还是生活,保持积极的心态很重要,不要好高骛远,不要想着遥远的目标不敢去努力。

今天摘录《解忧杂货店》的一句话:

如果自己不想积极认真地生活,不管得到什么样的回答都没用。

Flink 提交 Job 的方式

1、Web 端提交 Job

Web UI 的方式就不做介绍了,完全傻瓜式的点击。无非就是需要添加4个参数:

  1. 入口类的全限定名。
  2. 并行度(不能超过可用资源,我们的并行度也就是我们 Flink 集群中任务槽的个数Task Slots,默认一个TaskManager 一个任务槽Task Slot)。
  3. 运行时的参数。
  4. 检查点的目录(这两里的检查点的概念类似于我们 Spark 中的 checkPoint ,他们都是用来解决预防实时任务失败或关闭重启造成的数据丢失,所以设置一个检查点来对之前的数据进行恢复,那必然是需要额外的资源开销的,比如磁盘开销)。

至于取消任务,UI 端有一个大大的 Cancel。

2、命令行提交 Job

$ bin/flink run -m hadoop102:8081 -c com.study.lyh.wc.StreamWordCount ./FlinkStudy-1.0-SNAPSHOT.jar

 如果资源不足,再提交一个任务会使用默认最低的并行度,但要是最低的并行度也不能满足,就直接任务失败。除非上一个任务结束释放资源。

$ bin/flink cancel jobId

部署模式

Flink 一共有三种部署模式:会话模式、单作业模式和应用模式。

1、会话模式

        会话模式是先启动集群,然后客户端将用户的程序代码转换成数据流图(Dataflow Graph),并最终生成作业图(JobGraph),然后一并发送给JobManager;作业提交后,JobManager 为作业分配相应的资源,作业完成就释放资源,而集群并不因为没有作业就关闭。

        当然缺点也是显而易见的:因为资源是共享的,所以资源不够了,提交新的作业就会失败。另外,同一个 TaskManager 上可能运行了很多作业,如果其中一个发生故障导致 TaskManager 宕机,那么所有作业都会受到影响(因为当作业很多的时候,我们的资源TaskSlot被占满了,所以当有TaskManager节点宕机时,就无法保证容错,因为已经没有空闲资源供使用了,而且后面可能还有一堆作业等着处理呢)。

2、单作业模式

        单作业模式也很好理解,就是严格的一对一,集群只为这个作业而生。同样由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业完成后,集群就会关闭,所有资源也会释放。这样一来,每个作业都有它自己的 JobManager管理,占用独享的资源,即使发生故障,它的 TaskManager 宕机也不会影响其他作业。(注意:是作业,不是应用,我之前一直觉得这里的作业指的就是应用,但其实不是,一个应用可能包含一个或多个作业。)单作业模式就是为一个作业开启一个集群,就是这么奢侈,但对于运行时间长,需要资源量大的场景,这种牺牲是值得的。
        这些特性使得单作业模式在生产环境运行更加稳定,所以是实际应用的首选模式。需要注意的是,Flink 本身无法直接这样运行,所以单作业模式一般需要借助一些资源管理框架来启动集群,比如 YARN、Kubernetes。

3、应用模式

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

总结

  1. 在会话模式下,集群的生命周期独立于集群上运行的任何作业的生命周期,并且提交的所有作业共享资源。
  2. 而单作业模式为每个提交的作业创建一个集群,带来了更好的资源隔离,这时集群的生命周期与作业的生命周期绑定。
  3. 最后,应用模式为每个应用程序创建一个会话集群,在 JobManager 上直接调用应用程序的 main()方法。

Yarn

        Flink 独立(Standalone)模式由 Flink 自身提供资源,无需其他框架,这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但是比如独立模式中的单作业模式不依赖外部资源管理框架就无法实现。而我们刚开始提到的提交Job的方式默认就是Flink独立模式下的会话模式。

        我们知道,Flink只是一个流式计算框架,它并不擅长资源的管理,所以我们这里使用YARN,而且即使 Flink 的独立模式本就支持会话模式,我们还是使用YARN来管理,毕竟 YARN 是专业的资源调度框架嘛。

Yarn 部署的流程:

        客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上,Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。

1、Yarn 会话模式

1.1、启动 yarn-session 

bin/yarn-session.sh -nm test -d

-nm :指定应用名称

-d :意思是挂载到后台,我们的hadoop102可以 ctrl+C 停止当前会话而并不会关闭 yarn session。

7c1fc75a2c1f40c59022008d0feee041.png

执行该命令后返回的信息中,需要记住两条信息,一个是给我们的 Web UI 端口,一个是关闭该会话的命令。

1.2、提交 Job

提交 Job 的语法和我们 standlone 模式一样。

注意:这里提交 Job 的用户需要和创建 YARN-Session 的用户保持一致,否则会报错:
The main method caused an error: Failed to execute job ‘Flink Streaming Job’...拒绝连接

bin/flink run -c com.lyh.wc.UnBoundedStreamWordCount FlinkStudy-1.0-SNAPSHOT.jar

1.3、关闭 yarn-session 会话

echo "stop" | ./bin/yarn-session.sh -id application_1699415564762_0001

2、Yarn 单作业模式

2.1、提交作业

        在 YARN 环境中,由于有了外部平台做资源调度,所以我们也可以直接向 YARN 提交一个单独的作业,从而启动一个 Flink 集群。

$ bin/flink run -d -t yarn-per-job -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar

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

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

相关文章

【2023方案开发】无刷电机自动打气泵方案

如今新能源车大行其道,而车厂在考虑成本和设计的情况下,将备胎给取消了,那假如在车胎气压不足的状态下,没有备胎更换,那将如何解决困境。气压不住需要打气,那配备一台打气泵尤为重要,即使常年可…

Git系列之Git入门级(带你走进Git的世界)

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Git实战开发》。🎯🎯 &a…

论文速览 MobiCom 2023 | NeRF2 : Neural Radio-Frequency Radiance Fields

注1:本文系“最新论文速览”系列之一,致力于简洁清晰地介绍、解读最新的顶会/顶刊论文 Xiaopeng Zhao, Zhenlin An, Qingrui Pan, and Lei Yang. 2023. NeRF2: Neural Radio-Frequency Radiance Fields. In Proceedings of the 29th Annual International Conference on Mobil…

AIGC:使用生成对抗网络GAN实现MINST手写数字图像生成

1 生成对抗网络 生成对抗网络(Generative Adversarial Networks, GAN)是一种非常经典的生成式模型,它受到双人零和博弈的启发,让两个神经网络在相互博弈中进行学习,开创了生成式模型的新范式。从 2017 年以后&#x…

kubectl声明式资源管理命令

一、声明式资源管理介绍: 适合于对资源的修改操作声明式资源管理方法依赖于资源配置清单文件对资源进行管理资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)对…

如何排查CPU飙升的问题所在

我们在线上排查问题的时候发现系统的CPU直接爆红了,如何排查问题呢?怎么快速定位问题的所在呢? linux系统下: 首先我们通过top命令来查看那个进程占用CPU过大: top 这里只是简单的模拟一下,假设java进程占用CPU很大,那么我们通过这个进程来查找进程下的线程使用CPU的情况…

【23真题】C9无歧视,专业课均分130!

今天分享的是23年哈尔滨工业大学803的信号与系统部分的试题及解析。 本套试卷难度分析:22年哈今天分享的是23年哈尔滨工业大学803的信号与系统部分的试题及解析。 哈尔滨工业大学803考研真题,我也发布过,若有需要,戳这里自取&…

6-爬虫-scrapy解析数据(使用css选择器解析数据、xpath 解析数据)、 配置文件

1 scrapy解析数据 1.1 使用css选择器解析数据 1.2 xpath 解析数据 2 配置文件 3 整站爬取博客–》爬取详情–》数据传递 scrapy 爬虫框架补充 # 1 打码平台---》破解验证码-数字字母:ddddocr-计算题,滑块,成语。。。-云打码,超…

文件上传 [GXYCTF2019]BabyUpload1

打开题目 传个是jpg文件后缀的一句话木马上去 代码如下 <script languagephp>eval($_POST[v]);</script> 发现上传成功 因此我们需要先上传 .htaccess 文件&#xff0c;然后再上传 2.jpg文件 .htaccess作用&#xff1a;文件将别的后缀名文件内容解析为php程序…

使用matlab实现图像信号的色彩空间转换

利用matlab对图像信号进行读取&#xff0c;并对RGB空间进行转换&#xff0c;如转换到HSI空间等。 下面的这个代码是在使用了rgb2hsi()方法失败后&#xff0c;进行修改的。 rgb2hsi(img)这个方法可以将RGB图像转换为HIS图像&#xff1b;但是爆出了 Untitled5(line 5)hsi rgb2h…

通过Cookie和Session来实现网站中登录账号的功能

文章目录 一、Cookie和Session二、基于Cookie和Session实现登录账号的功能2.1步骤一2.2步骤二2.3步骤三2.4总结通过Cookie和Session来实现登录功能2.5运行截图 一、Cookie和Session cookie是http请求header中的一个属性&#xff0c;是浏览器持久化存储数据的一种机制&#xff…

2023年香港专才计划(输入内地人才计划)拿身份最新申请攻略!

2023年香港专才计划&#xff08;输入内地人才计划&#xff09;拿身份最新申请攻略&#xff01; 近年来&#xff0c;香港受持续的人口老龄化等多因素影响&#xff0c;2022年香港人口总计减少了约12.17万人&#xff0c;跌幅1.6%&#xff0c;其中净移出人数约9.5万人。在此背景下&…

web3 从redux中拿出所有已完成订单 并渲染到对应的Table列表中

上文web3 React dapp项目通过事件从区块链中拿到 已取消 已完成 和所有的订单数据 并存入redux中 中 我们已经从 区块中拿到了自己的订单 然后 我们恢复一下上文的环境 ganache ganache -d然后 登一下 MetaMask 然后 用我们的项目 发布一下合约 truffle migrate --reset然后…

汽车标定技术(八)--MPC57xx是如何支持标定的页切换

目录 1.页切换的概念 1.1 标定常量的理解 1.2 页切换 2.MPC57xx的Overlay模块 3.小结 1.页切换的概念 在汽车标定测量中&#xff0c;有一个概念我想很多人都听过&#xff0c;但是实际上在项目里没有用到过&#xff0c;那就是今天要讲的页切换概念。在讲页切换的时候&#…

自考改革过渡期!广东小自考最优解只需要2门笔试

图片来源&#xff1a;广东省考试院* 近期广东教育考试院公布了自考专业调整的相关通知&#xff0c;新的专业考试计划从2026年1月起执行。 这次改革过渡期中有一个重大利好消息&#xff0c;小自考专业笔试统考科目最少只需考2门笔试&#xff01; 这是为什么呢&#xff1f; 小…

蓝牙安全管理(SM:Security Manager)规范详解

总述 配对(Pairing)分为三个阶段&#xff0c;前两个阶段是必须的&#xff0c;而第三阶段是可选的&#xff0c;三个阶段如下&#xff1a; 阶段1&#xff1a;配对功能交换(Pairing Feature Exchange) 阶段2(LE传统配对 LE legacy pairing)&#xff1a;短期密钥(STK:Short Term…

阿里巴巴国际站为什么凉了?数字一体化方案崛起!

随着全球化和数字化的浪潮不断涌现&#xff0c;跨境电商市场一直以惊人的速度增长。中国作为主要的出口和进口市场之一&#xff0c;成为跨境贸易的重要参与者。然而&#xff0c;近年来&#xff0c;阿里巴巴国际站似乎面临了一些挑战&#xff0c;同时数字一体化方案崭露头角&…

FallO’ween 活动:元宇宙中秋天与万圣节的邂逅

秋风徐徐&#xff0c;万圣节已经来临&#xff01;还有什么比沉浸在 FallOween 的世界更好的方式来庆祝这个“恐怖“的季节呢&#xff1f;这项全新的季节性活动将于 10 月 30 日推出&#xff0c;将秋季的迷人气息与万圣节的怪异魅力融为一体&#xff0c;为大家带来为期 30 天的冒…

初识Java 17-4 反射

本笔记参考自&#xff1a; 《On Java 中文版》 接口和类型信息 interface关键字的一个重要目标就是允许程序员隔离组件&#xff0c;减少耦合。但我们可以通过类型信息来绕过接口的隔离&#xff0c;这使得接口不一定能够保证解耦。 为了演示这一实现&#xff0c;我们需要先创建一…

LabVIEW调用库函数节点无法显示DLL中的函数

LabVIEW调用库函数节点无法显示DLL中的函数 正在使用调用库函数节点来调用一个DLL文件。可是&#xff0c;当浏览该DLL时&#xff0c;却无法在Function Name下拉菜单中选择任何函数。为什么所有的DLL函数都无法选中呢&#xff1f; 解答: 调用的DLL可能是通过.NET封装的&#x…