【入门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.hqwc.cn/news/162341.html

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

相关文章

程序员笔记本电脑选 windows 还是 MAC

计算机选择是每个进入 IT 行业同学的第一个重要选择,那么你是怎么选择的呢? 选择操作系统(Windows还是macOS)取决于程序员的需求、偏好和工作流程。每个操作系统都有其优点和缺点,下面将分别讨论它们,以帮助…

Amazon EC2 安全可调用的云虚拟主机服务器

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Amazon EC2 打造全新的科技链 Amazon Elastic Compute Cloud(Amazon EC2)提供最广泛、最深入的计算平台,拥有超过 500 个实例&…

使用WMS仓储管理系统防止呆料的几个建议

随着互联网的深入,客户的需求变化迅速,从淘宝、京东到直播带货,产品的更新迭代速度越来越快。对于制造企业而言,如何在这样的环境中降低呆腐物料,提高利润,是其生存和发展的关键。 面对快速迭代的产品&…

Go invalid memory address or nil pointer dereference错误 空指针问题

Go 指针声明后赋值,出现 panic: runtime error: invalid memory address or nil pointer dereference,这种是内存地址错误。 首先我们要了解指针,指针地址在 Go 中 * 代表取指针地址中存的值,& 代表取一个值的地址对于指针&am…

软件设计不是CRUD(5):耦合度的强弱(下)

接上文《软件设计不是CRUD(4):耦合度的强弱(上)》 1.5、数据耦合 在模块间耦合强度已经降低至控制耦合的基础上,如果被调用的模块要求传入的是简单的数值,或者一种抽象的结构。这种依赖强度叫…

centos7安装nginx-阿里云服务器

1.背景 2.准备工作步骤 2.1.安装gcc 阿里云服务器一般默认是安装了的 检查是否已安装 gcc -v 出现如下信息表示已安装: 如果没有安装,执行 yum -y install gcc 2.2.安装pcre,pcre-devel yum install -y pcre pcre-devel 2.3.安装zlib yum install -y zlib zlib-devel…

【实践篇】一次Paas化热部署实践分享 | 京东云技术团队

前言 本文是早些年,Paas化刚刚提出不久时,基于部门内第一次Paas化热部署落地经验所写,主要内容是如何构建一些热部署代码以及一些避雷经验。 一、设计-领域模型设计 1.首先,确定领域服务所属的领域 2.其次,确定垂直…

每天一个公众号干货|定时群发教程

每天一个公众号排版小知识,今天分享的是定时群发功能,一次性给你讲清楚 公众号定时群发可以让我们在固定的时间精准的发表文章,这对发文强迫症的小伙伴来时是一个非常神仙的功能,如果群发之前有事耽误发表了,也可以使…

中国社科院大学-新加坡新跃社科大学全球战略领导力博士学位教育项目招生简章

Singapore University of Social Sciences--University of Chinese Academy of Social Sciences Doctoral program on Global Strategic Leadership V13146152701 一、项目简介 全球经济正在经历由科技进步和创新、政治和人口剧烈变化所带来的巨大的不确定性和挑战。面对日…

Docker学习——③

文章目录 1、Docker Registry(镜像仓库)1.1 什么是 Docker Registry?1.2 镜像仓库分类1.3 镜像仓库工作机制1.4 常用的镜像仓库 2、镜像仓库命令3、镜像命令[部分]4、容器命令[部分]4.1 docker run4.2 docker ps 5、CentOS 搭建一个 nginx 服…

体验SOLIDWORKS旋转反侧切除增强 硕迪科技

大家在设计中经常使用的旋转切除命令在solidworks2024版本中迎来了新的增强,添加了旋转反侧切除选项。在设计过程中不必修改复杂的草图即可切除掉我们不需要的部分。使设计工作更加方便快捷。 打开零部件后,点击键盘上的S键并输入旋转切除以搜索该命令&a…

【mmcv报错】ModuleNotFoundError: No module named ‘mmcv.runner

跑一个代码需要用到mmcv和mmseg 其中有两行代码: from mmcv.runner import load_checkpoint from mmseg.utils import get_root_logger我先是按照官方推荐的安装方法去安装了mmcv和mmseg pip install -U openmim mim install mmcv它会自动帮你安装mmengine 我的cu…