【入门Flink】- 04Flink部署模式和运行模式【偏概念】

部署模式

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

区别主要在于:集群的生命周期以及资源的分配方式;以及应用的main方法到底在哪里执行——客户端(Client)还是 JobManager。

1.1 会话模式(Session Mode)

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

image-20231102230553759

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

1.2 单作业模式(Per-Job Mode)

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

image-20231102231610096

作业完成后,集群就会关闭,所有资源也会释放
这些特性使得单作业模式在生产环境运行更加稳定,所以是 实际应用的首选模式
需要注意的是,Flink本身无法直接这样运行,所以单作业模式一般需要借助一些资源管理框架来启动集群,比如YARN、Kubernetes(K8S)。

1.3 应用模式(Application Mode)

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

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

image-20231102233138048

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

实际应用时,一般需要和资源管理平台结合起来,选择特定的模式来分配资源、部署应用。

运行模式

2.1 Standalone 运行模式(了解)

独立模式是独立运行的,不依赖任何外部的资源管理平台;当然独立也是有代价的:如果资源不足,或者出现故障,没有自动扩展或重分配资源的保证,必须手动处理。所以独立模式一般只用在开发测试或作业非常少的场景下

2.1.1 会话模式部署

提前启动集群,并通过 Web 页面客户端提交任务(可以多个任务,但是集群资源固定)。

image-20231102233812748

2.1.2 单作业模式部署

Flink的Standalone集群并不支持单作业模式部署。因为单作业模式需要借助一些资源管理平台。

2.1.3 应用模式部署

应用模式下不会提前创建集群,所以不能调用 start-cluster.sh 脚本。可以使用同样在bin 目录下的 standalone-job.sh 来创建一个 JobManager。

image-20231102234009864

应用模式 jar包必须在lib目录下

2.2 YARN 运行模式(重点)

YARN (hadoop中组件,用于资源管理和作业调度)上部署的过程是:客户端把 Flink 应用提交给 Yarn 的ResourceManager,Yarn的ResourceManager 会向 Yarn 的 NodeManager 申请容器 。在这些容器上,Flink会部署JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源

2.2.1 前提准备

image-20231102234823545

2.2.2 会话模式部署

YARN 的会话模式与独立集群略有不同,需要首先申请一个YARN 会话(YARNSession)来启动 Flink 集群。具体步骤如下:

image-20231102235250178

可以Web UI界面提交

image-20231102235606901

2.2.3 单作业模式部署

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

image-20231102235935222

image-20231103001515950

image-20231103001718902

2.2.4 应用模式部署 √

应用模式同样非常简单,与单作业模式类似,直接执行 flink run-application 命令即可。

image-20231103000301984

image-20231103000531035

2.3 K8S 运行模式(了解)

容器化部署是如今业界流行的一项技术,基于 Docker 镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是 Kubernetes(k8s),而Flink也在最近的版本中支持了 k8s 部署模式。基本原理与 YARN 是类似的,具体配置可以参见官网说明。

历史服务器

运行 Flink job 的集群一旦停止,只能去 yarn 或本地磁盘上查看日志,不再可以查看作业挂掉之前的运行的 Web UI,很难清楚知道作业在挂的那一刻到底发生了什么。如果还没有 Metrics 监控的话,那么完全就只能通过日志去分析和定位问题了,所以如果能还原之前的 Web UI,可以通过 UI 发现和定位一些问题。

Flink 提供了历史服务器,用来在相应的 Flink 集群关闭后查询已完成作业的统计信息。都知道只有当作业处于运行中的状态,才能够查看到相关的WebUI 统计信息。通过History Server 才能查询这些已完成作业的统计信息,无论是正常退出还是异常退出。

此外,它对外提供了 REST API,它接受 HTTP 请求并使用JSON 数据进行响应。Flink任务停止后,JobManager 会将已经完成任务的统计信息进行存档,History Server 进程则在任务停止后可以对任务统计信息进行查询。比如:最后一次的Checkpoint、任务运行时的相关配置。

image-20231103000952246

bin/historyserver.sh stop

5)在浏览器地址栏输入:http://hadoop102:8082 查看已经停止的job的统计信息。

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

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

相关文章

小程序如何设置用户同意服务协议并上传头像和昵称

为了保护用户权益和提供更好的用户体验,设置一些必填项和必读协议是非常必要的。首先,用户必须阅读服务协议。服务协议是明确规定用户和商家之间权益和义务的文件。通过要求用户在下单前必须同意协议,可以确保用户在使用服务之前了解并同意相…

分析:如何多线程运行测试用例

这是时常被问到的问题,尤其是UI自动化的运行,过程非常耗时,所以,所以多线程不失为一种首先想到的解决方案。 多线程是针对的测试用例,所以和selenium没有直接关系,我们要关心的是单元测试框架。 unittest …

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号、数字被过滤绕过(ctfshow web入门370)-CSDN博客 ssti板块注入 正好不会 {%%}的内容 学习一下 经过测试 发现过滤了 {{}} 那么我们就开始吧 我们可以通过这个语句来查询是否存在ss…

免费亲人微信聊天记录提取软件新版本v1.1,使用说明,注意事项 2023.11.06

V 1.1 优化了备份速度,新增了备份消息类型的选型,可以选择仅仅备份文本,或者文本与音频,或者文本音频视频图片。 有什么办法可以导出与某个人的微信聊天记录? 只想导出与某个微信好友的聊天记录,有办法做到…

运维知识点-MySQL从小白到入土

MySQL从小白到入土 mysql 服务器安装windows mysql 服务漏洞复现-mysql jdbc反序列化-权限绕过 mysql 服务器安装 https://dev.mysql.com/downloads/mysql/https://www.cnblogs.com/xiaostudy/p/12262804.html 点餐小程序腾讯云服务器安装mysql8 windows mysql 服务 net sta…

1.UML面向对象类图和关系

文章目录 4种静态结构图类图类的表示类与类之间的关系依赖关系(Dependency)关联关系(Association)聚合(Aggregation)组合(Composition)实现(Realization)继承/泛化(Inheritance/Generalization)常用的UML工具reference欢迎访问个人网络日志🌹🌹知行空间🌹🌹 4种静态结构…

cp没有--exclude选项!Linux复制文件夹时如何排除一些文件?

之前使用tar命令压缩文件将时,使用了–exclude选项排除了一些不需要的文件。现在我想复制一个文件夹,但是其中一些文件不需要复制,此时注意到cp命令居然没有–exclude选项。 rsync可以快速地帮助我们完成相同的事情,命令如下&…

【Java 进阶篇】JSP 简单入门

在现代Web开发中,JavaServer Pages(JSP)是一项非常重要的技术。JSP允许开发者将Java代码嵌入HTML页面,以实现动态内容的生成和呈现。本文将详细介绍JSP的概念、原理以及如何使用JSP来构建Web应用程序。 第一部分:JSP …

如何将 XxlJob 集成达梦数据库

1. 前言 在某些情况下,你的项目可能会面临数据库选择的特殊要求,随着国产化的不断推进,达梦数据库是一个常见的选择。本篇博客将教你如何解决 XxlJob 与达梦数据库之间的 SQL 兼容性问题,以便你的任务调度系统能够在这个数据库中…

章鱼网络进展月报 | 2023.10.1-10.31

章鱼网络大事摘要 1、Louis 成功竞选 NDC 的 HoM 议席,将会尽最大努力推动 NEAR 变革。2、章鱼网络受邀参加在土耳其主办的 Cosmoverse2023,分享 Adaptive IBC 的技术架构。3、2023年10月8日章鱼日,是章鱼网络主网上线2周年的纪念日。 …

机器学习---SVM目标函数求解,SMO算法

1. 线性可分支持向量机 1.1 定义输入数据 假设给定⼀个特征空间上的训练集为: 其中,(x , y )称为样本点。 x 为第i个实例(样本)。 y 为x 的标记: 当y 1时,x 为正例;当y −1时,x…

vue3项目实践

创建 vue3 项目 node本版:node 16.x.x, 脚手架:create-vue 脚手架工具,底层vite 创建vue3项目:npm init vuelatest setup函数 vue3 单文件组件 1、vite.config.js配置文件基于vite的配置 2、template模板不再要求唯…

docker compose实现容器编排

Compose 使用的三个步骤: 使用 Dockerfile 定义应用程序的环境 使用 compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行 最后,执行 docker compose up 命令来启动并运行整个应用程序 为什么需要docker compose Dock…

万宾科技管网水位监测助力智慧城市的排水系统

以往如果要了解城市地下排水管网的水位变化,需要依靠人工巡检或者排查的方式,这不仅加大了人员的工作量,而且也为市政府带来了更多的工作难题。比如人员监管监测不到位或无法远程监控等情况,都会降低市政府对排水管网的管理能力&a…

SpringBoot配置文件优先级

1.idea临时属性 说明:Program arguments配置--server.port8082 --ab;意思是将端口改成了8082。这个优先级最高。 2.resource 说明:创建config文件里面的yml文件。 3.jar包同级(yml) 说明:创建一个yml文件…

如何去除视频水印?三种简便有效的方法解决视频水印问题

在当今社交媒体时代,视频分享已成为一种流行趋势。然而,很多人在分享自己的作品时却苦于视频上存在的水印,水印通常是出于版权保护或品牌推广的目的而添加到视频中的,但有时它们可能会对用户体验造成负面影响。 如果您正在寻找如何…

渗透工具使用及思路总结(持续更新)

扫描类 nmap 快速扫描开放端口 nmap --min-rate 10000 -p- 10.129.252.63扫描详细全服务 nmap -sV -A -p 22,80 10.129.252.63 nmap -sV -A -p- 10.129.252.63-l:显示正在监听的 TCP 和 UDP 端口; -a:显示所有活动的 TCP 连接; -A <网络类型>或 - <网络类型&g…

苹果加大对印度的扶持,提高在其生产iphone的比重

KlipC报道&#xff1a;跟踪苹果产业链&#xff0c;有分析师预计2023年全球约12%-14%的iphone在印度生产&#xff0c;预计2024年&#xff0c;印度将生产20%-25%的iphone。 KlipC的合伙人Andi D表示&#xff1a;“近年来随着苹果对中国的以来&#xff0c;印度已经成为高科技制造和…

0003Java安卓程序设计-springboot基于Android的学习生活交流APP

文章目录 **摘** **要**目 录系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘 要 网络的广泛应用给生活带来了十分的便利。所以把学习生活交流管理与现在网络相结合&#xff0c;利用java技术建设学习生活交流APP&…

[PyTorch][chapter 59][强化学习-2-有模型学习]

前言&#xff1a; 在已知模型的环境里面学习,称为有模型学习&#xff08;model-based learning&#xff09;. 此刻,下列参数是已知的&#xff1a; : 在状态x 下面,执行动作a ,转移到状态 的概率 : 在状态x 下面,执行动作a ,转移到 的奖赏 有模型强化学习的应用案例 …