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

Flink(二)【Flink 部署模式】

前言

        今天是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

相关文章:

Flink(二)【Flink 部署模式】

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

在使用ubuntu18.04的时候使用阿里源或者清华源后安装mysql5.7时出现dpkg提示的错误信息

在使用ubuntu18.04的时候使用阿里源或者清华源后安装mysql5.7时出现dpkg提示的错误信息 经过排查发现该问题可能跟本地库依赖文件导致mysql安装不上。 清除刚下载保留的mysql,然后删除、清除在更新本地依赖库。 sudo apt purge mysql* sudo apt autoremove sudo …...

引用(类名后加符号)和指针的区别

它们的区别: ①从现象上看, 指针在运行时可以改变其所指向的值, 而引用一旦和某个对象绑定后就不再改变。 这句话可以理解为: 指针可以被重新赋值以指向另一个不同的对象。 但是引用则总是指向在初始化时被指定的对象&#x…...

如何查看网站的https的数字证书

如题 打开Chrome浏览器,之后输入想要抓取https证书的网址,此处以知乎为例点击浏览器地址栏左侧的锁的按钮,如下图 点击“连接是安全的”选项,如下图 点击“证书有效”选项卡,如下图 查看基本信息和详细信息 点击详细信…...

关于maven读取settings.xml文件的优先级问题

今天在IDEA中配置maven的setting.xml文件路径指向的.m2路径下的setting_a.xml文件,同时,我的maven3.6.3也放在.m2中。 [1] .m2文件夹 [2] apache-maven-3.6.3文件夹 然后,在IDEA中打包发布时发现,无论如何都读取不到指定的setti…...

城市内涝积水监测,万宾科技内涝预警监测系统

每一个城市的排水体系都是一个复杂的网络系统,需要多个部分配合协调,预防城市排水管网带来安全隐患,也因此才能在一定程度上缓解城市内涝带来的安全问题。在海绵城市建设过程中不仅要解决大部分道路硬化导致的积水无法渗透等问题,…...

JavaEE初阶学习:Linux 基本使用和 web 程序部署

1.Linux的基本认识 Linux 是一个操作系统.(搞管理的系统) 和Windows都是同类产品~~ Linux 实际的场景: 1.服务器 2.嵌入式设备 3.移动端(手机)Android 其实就是Linux 1991年,还在读大学的 芬兰人 Linus Benedict Torvalds,搞了一个Linux 这样的系统0.01版,正式发布了~ 后…...

摔杯算法(要求用最少的测试次数找出恰巧会使杯子破碎的楼层。)

题目: 一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破;若在第M层不破,则在任何比M低的楼层均不会破。给你两个这样的杯子,让你在100层高的楼层中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层…...

centos7安装docker容器

卸载老版本: $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine/var/lib/docker/路径下存在镜像、数据卷、容器等,在卸载的时候是不会自动删除…...

【二叉树】如何构建一个包含大量随机数节点的二叉树测试用例

【二叉树】如何构建一个包含大量随机数节点的二叉树测试用例 前言一、案例准备二、自动生成随机二叉树工具类(TreegenerateUtils)三、如何调用随机二叉树工具类(TreegenerateUtils)? 前言 今天笔者在测试有关二叉树的…...

防火防盗防小人 使用 Jasypt 库来加密配置文件

⚔️ 项目配置信息存放在哪? 在日常开发工作中,我们经常需要使用到各种敏感配置,如数据库密码、各厂商的 SecretId、SecretKey 等敏感信息。 通常情况下,我们会将这些敏感信息明文放到配置文件中,或者放到配置中心中。…...

Spring Cloud学习(二)【Eureka注册中心】

文章目录 Eureka 注册中心Eureka 的作用 动手实践搭建 EurekaServer服务注册服务发现 Ribbon 负载均衡负载均衡原理IRule 接口(负载均衡策略)饥饿加载 Eureka 注册中心 服务调用出现的问题 不能采用硬编码服务消费者该如何获取服务提供者的地址信息&am…...

数据分析实战 | 线性回归——女性身高与体重数据分析

目录 一、数据集及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 实现回归分析类算法的Python第三方工具包比较常用的有statsmodels、statistics、scikit-learn等&#…...

python回文日期 并输出下一个ABABBABA型回文日期

题目: 输入: 输入包含一个八位整数N,表示日期 对于所有的测评用例,10000101 ≤N≤89991231,保证N是一个合法日期的8位数表示 输出: 输出两行,每行一个八位数。第一行表示下一个回文日期第二…...

Zotero拓展功能之Zotero Style

Zotero Style拓展功能 一、列: 1.简介 首先你必须知道Zotero的基本功能:右键任意一个列的名字,会弹出一个右键菜单,你可以勾选/取消勾选一个列,并且在最后有两个按钮,一个是“列设置”,一个是…...

小程序提交表单之后,清除表单form

构造表单 <form bindsubmit"bindFormSubmit"> <view class"main"><textarea name"textarea" value"{{content}}"></textarea> <button form-type"submit" type"primary" > 提交 &…...

Java程序设计实验5 | Java API应用

*本文是博主对Java各种实验的再整理与详解&#xff0c;除了代码部分和解析部分&#xff0c;一些题目还增加了拓展部分&#xff08;⭐&#xff09;。拓展部分不是实验报告中原有的内容&#xff0c;而是博主本人自己的补充&#xff0c;以方便大家额外学习、参考。 &#xff08;解…...

自媒体项目详述

总体框架 本项目主要着手于获取最新最热新闻资讯&#xff0c;以微服务构架为技术基础搭建校内仅供学生教师使用的校园新媒体app。以文章为主线的核心业务主要分为如下子模块。自媒体模块实现用户创建功能、文章发布功能、素材管理功能。app端用户模块实现文章搜索、文章点赞、…...

客服呼叫中心的语音质检工作

语音质检是呼叫中心运营中必不可缺少的一个环节&#xff0c;呼叫中心语音质检对坐席起着直接监督的作用&#xff0c;也正是这种监督约束推动着客服人员不断提升自身的业务能力。 而客服呼叫中心的质检结果中还蕴藏了大量有价值的信息&#xff0c;可以通过日常的质检工作真正发现…...

深度解密 | 灵脉SAST 3.0最新特性曝光

一、多模智能引擎焕新 2023年6月&#xff0c;灵脉SAST入选国际权威咨询机构Forrester发布的《The Static Application Security Testing Landscape》报告成为全球范围内仅有的两款亚太区SAST代表产品之一。 此次3.0版本重大焕新&#xff0c;灵脉SAST从检测工具的灵魂核心入手…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...