flink yarn模式3种提交任务方式

news2025/2/28 5:11:18

接上文:一文说清flink从编码到部署上线

1.引言

Apache Hadoop的Yarn是许多数据处理框架中非常流行的资源提供者。Flink的服务提交给Yarn的ResourceManager后,ResourceManager会在由Yarn的NodeManager管理的机器上动态分配运行容器。Flink在这些容器上部署自己的任务。

Yarn模式是将Flink交由Yarn来进行资源分配,因此,在启动Yarn模式时,需要保证集群上的Hadoop集群已经启动(包括HDFS和Yarn),HADOOP_HOME环境变量也已经正常配置。

2.yarn session

2.1 yarn-session.sh(开辟资源)+flink run(提交任务)

在yarn上申请一个固定的flink集群,然后所有任务都共享这个集群内的资源。会话模式同样也有–datched 或者 -d 这样的模式。 默认情况下是attached mode 绑定模式。这种模式下客户端提交一个任务到flink集群后,客户端程序会继续执行。持续跟踪任务在集群中的运行状态。如果集群上任务执行失败了,本地客户端也会显示出这些错误。而如果本地客户端应用停止了,也同样会通知集群停止对应的任务。

加上–detached后,就转变为 detached mode 解除绑定模式。这种模式下本地客户端提交任务到集群后就停止了。任务在集群中的执行状态需要由yarn或者其他的管理工具进行监控。

这种模式下会启动yarn session,并且会启动Flink的两个必要服务JobManager和Task-managers,然后你可以向集群提交作业。同一个Session中可以提交多个Flink作业。需要注意的是,这种模式下Hadoop的版本至少是2.2,而且必须安装了HDFS(因为启动YARN session的时候会向HDFS上提交相关的jar文件和配置文件)。

通过./bin/yarn-session.sh脚本启动YARN Session。
脚本可以携带的参数:

-n(--container):TaskManager的数量。(1.10 已经废弃)
-s(--slots):每个TaskManager的slot数量,默认一个slot一个core,默认每个taskmanager的slot的个数为1,有时可以多一些taskmanager,做冗余。
-jm:JobManager的内存(单位MB)-q:显示可用的YARN资源(内存,内核);
-tm:每个TaskManager容器的内存(默认值:MB)
-nm:yarn 的appName(现在yarn的ui上的名字)-d:后台执行。

注意:
如果不想让Flink YARN客户端始终运行,那么也可以启动分离的 YARN会话。该参数被称为-d或–detached。

确定TaskManager数:
Flink on YARN时,TaskManager的数量就是:max(parallelism) / yarnslots(向上取整)。例如,一个最大并行度为10,每个TaskManager有两个任务槽的作业,就会启动5个TaskManager。

2.2 启动

yarn-session.sh -tm 1024  -s 4 -d

在这里插入图片描述

上面的命令的意思是,每个 TaskManager 拥有4个 Task Slot(-s 4),并且被创建的每个 TaskManager 所在的YARN Container 申请 1024M 的内存,同时额外申请一个Container用以运行ApplicationMaster以及Job Manager。

TM的数量取决于并行度,如下图:
在这里插入图片描述
访问:http://10.86.97.191:8099/cluster/apps
在这里插入图片描述

2.3 提交任务

提交任务:

flink run -Dparallelism.default=1 -Denv.java.opts=" -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" -Dtaskmanager.memory.process.size=1g -Dyarn.application.name="FlinkCdcMysql"  -Dtaskmanager.numberOfTaskSlots=1 -c com.zl.MysqlExample /home/FlickCDC-1.0-SNAPSHOT-jar-with-dependencies.jar

在这里插入图片描述
按照下面步骤进入Flink管理页面:
在这里插入图片描述
在这里插入图片描述
常用命令说明:

# 提交任务
flink run -t yarn-session -Dyarn.application.id=application_XXXX_YY /home/FlickCDC-1.0-SNAPSHOT-jar-with-dependencies.jar
# 重新绑定另外一个yarn session
yarn-session.sh -id application_XXXX_YY
# 查看帮助
yarn-session.sh -h

会话模式在执行时会在本地创建一个临时的配置文件,默认创建在/tmp目录下。

3.Application Mode 应用模式

应用模式将在任务的启动时临时在yarn上申请一个flink集群。任务从main方法启动开始就会提交到yarn上的flink集群执行。执行完成后,集群就会立即注销。
文章:一文说清flink从编码到部署上线 用的就是这种模式。在此就不过多展开了。

flink run-application -t yarn-application -Dparallelism.default=1 -Denv.java.opts=" -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" -Dtaskmanager.memory.process.size=1g -Dyarn.application.name="FlinkCdcMysql"  -Dtaskmanager.numberOfTaskSlots=1 -c com.zl.MysqlExample /home/FlickCDC-1.0-SNAPSHOT-jar-with-dependencies.jar

常用命令说明:

# 提交任务,主要是记住这个-t 参数
flink run-application -t yarn-application /home/FlickCDC-1.0-SNAPSHOT-jar-with-dependencies.jar
# 查看集群上的任务
flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY
# 手动停止集群上的任务
flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>
# 使用所有节点都能访问到的jar包来提交任务。
flink run-application -t yarn-application \
-Dyarn.provided.lib.dirs="hdfs://myhdfs/my-remote-flink-dist-dir" \
hdfs://myhdfs/jars/my-application.jar

4.Per-job Cluster Mode 单任务模式

这种模式跟应用模式很类似,也会给每个应用在yarn上申请一个单独的flink集群。只不过这种模式下,任务是先在本地执行,构建数据处理链。构建完成后再将任务提交到flink集群上执行。

flink run -t yarn-per-job --detached -Dparallelism.default=1 -Denv.java.opts=" -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" -Dtaskmanager.memory.process.size=1g -Dyarn.application.name="FlinkCdcMysql"  -Dtaskmanager.numberOfTaskSlots=1 -c com.zl.MysqlExample /home/FlickCDC-1.0-SNAPSHOT-jar-with-dependencies.jar

常用命令说明:

# 提交任务
flink run -t yarn-per-job --detached /home/FlickCDC-1.0-SNAPSHOT-jar-with-dependencies.jar
# 查询集群上正在执行的任务
flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
# 手动停止集群上的任务
flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
<jobId>

日志如下图所示:
在这里插入图片描述
在这里插入图片描述

5.注意

在生产环境中,一般Yarn上的资源都比较充足,优先建议使用Perjob模式,其次是Application模式。 这两种模式能够更好进行应用隔离。当然,如果集群的资源确实非常紧张,也可以使用Session模式。

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

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

相关文章

【JAVA高级篇教学】第三篇:Redisson作用简介

Redisson 是一个强大的 Redis 客户端&#xff0c;不仅可以实现限流和分布式锁&#xff0c;还提供了许多其他分布式工具和功能&#xff0c;涵盖数据结构、同步控制、消息队列等多个方面。以下是 Redisson 的主要作用和使用场景&#xff1a; 目录 1. 分布式数据结构 支持的数据…

springboot413福泰轴承股份有限公司进销存系统(论文+源码)_kaic

摘 要 使用旧方法对福泰轴承股份有限公司进销存系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在福泰轴承股份有限公司进销存系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不…

Linux部署oceanbase

一、源码部署 1. 下载官网安装包 https://www.oceanbase.com/softwarecenter 2. 上传安装包并解压缩 #在/home目录下创建oceanbase文件夹 mkdir oceanbase cd oceanbase/ tar -xzf oceanbase-all-in-one-4.2.1_bp10_20241122.el7.x86_64.tar.gz 3. 安装 cd oceanbase-all-in…

分布式 分布式事务 总结

前言 相关系列 《分布式 & 目录》《分布式 & 分布式事务 & 总结》《分布式 & 分布式事务 & 问题》 分布式事务 所谓分布式事务是指操作范围笼罩多个不同节点的事务。例如对于订单节点&库存节点而言&#xff0c;一次完整的交易需要同时调动两个节…

【蓝桥杯每日一题】重新排序

重新排序 2024-12-8 蓝桥杯每日一题 重新排序 前缀和 差分 题目大意 给定一个数组 A 和一些查询 L i , R i Li_,R_i Li,​Ri​, 求数组中第 L i L_i Li​至第 R i R_i Ri​个元素之和。 小蓝觉得这个问题很无聊, 于是他想重新排列一下数组, 使得最终每个查 询结果的和尽可能…

jupyterlab 增加多个kernel,正确做法

1、背景 需要增加一个kernel然后相当于隔离一个环境 juypterlab Version 3.0.14 2、用conda 安装 例如&#xff0c;你在conda下有一个python 3.12 的环境 py312 ipython kernel install --user --namepy312 如果保持的话&#xff0c;用pip安装相应的包就好 3、检查是否配置好 …

uni-app 组成和跨端原理 【跨端开发系列】

&#x1f517; uniapp 跨端开发系列文章&#xff1a;&#x1f380;&#x1f380;&#x1f380; uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…

KV Shifting Attention Enhances Language Modeling

基本信息 &#x1f4dd; 原文链接: https://arxiv.org/abs/2411.19574&#x1f465; 作者: Mingyu Xu, Wei Cheng, Bingning Wang, Weipeng Chen&#x1f3f7;️ 关键词: KV shifting attention, induction heads, language modeling&#x1f4da; 分类: 机器学习, 自然语言处…

算法-字符串-72.编辑距离

一、题目 二、思路解析 1.思路&#xff1a; 最少操作数——动态数组 res[i][j]:长度为i的字符串转化为长度为j字符串的最少操作 2.常用方法&#xff1a; 无 3.核心逻辑&#xff1a; 1.情况一&#xff1a;当word1为空&#xff0c;word2不为空时 for(int i0;i<size2;i){res[0…

云开发实战教程:手把手教你高效开发应用

声明&#xff1a;本文仅供实践教学使用&#xff0c;没有任何打广告成分 目录 1.引言 2.云开发 Copilot介绍 云开发 Copilot 的功能与特点 3.环境准备 步骤一登录账号 步骤二新建环境 4.开发实践 4.1AI 生成低代码应用 4.2AI 生成低代码页面/区块 4.3AI 优化低代码组件…

Linux笔记9 DNS域名解析服务器

简介 DNS&#xff08;Domain Name System&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分 布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS使用的是53端口&#xff0c; 通常DNS是以UDP这个较快速的数据传输协议来查询的&#x…

编程的“超能力”:解锁 MarsCode AI 的智能助手

文章目录 前言MarsCode AI 提供的超能力**1. 代码补全 | Code Completion**你是否曾卡在函数的中途&#xff0c;不知道下一行该怎么写&#xff1f;MarsCode AI 就是你的灵感缪斯&#xff01;示例 **2. 代码解释 | Explain Code**“这段代码是干嘛的&#xff1f;”当你面对团队老…

大数据新视界 -- 大数据大厂之 Hive 数据导入:多源数据集成的策略与实战(上)(3/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

提升搜索体验!—— 推出 Elastic Rerank 模型(技术预览版)

作者&#xff1a;来自 Elastic Shubha Anjur Tupil 几分钟内即可开始使用 Elastic Rerank 模型&#xff1a;强大的语义搜索功能&#xff0c;无需重新索引&#xff0c;提供灵活性和成本控制&#xff1b;高相关性、顶级性能和文本搜索效率。 使用我们全新的先进跨编码器 Elastic …

STM32+模拟或硬件IIC+SHT20驱动问题:接上拉电阻、BUSY死锁?

主要问题&#xff1a; 1&#xff0c;使用STM32F103C8T6&#xff0c;模拟IIC&#xff0c;SCL和SDA口配置为推挽输出上拉&#xff0c;主要是SDA脚&#xff0c;每次都要输出输入模式重新配置&#xff0c;虽然也能通信&#xff0c;但不稳定&#xff0c;出错率大&#xff1b; 2&…

Windows11和Ubuntu用PointNet++训练自己的数据集(部件分割模型)

省流&#xff1a; &#xff08;1&#xff09;不管是Linux还是Windows都不影响&#xff0c;只要有pycharm或者vscode即可&#xff0c;啥系统都行。 &#xff08;2&#xff09;此外由于自己的需求&#xff0c;所以只做物体部件分割&#xff08;partseg&#xff09;任务&#xff0…

【git】git回退到之前版本+拓展git命令

一、问题 git提交有时候会出错&#xff0c;想回退到之前的版本 1、命令git reset --soft <commit_id> commit_id【回退到的编号】 2、git push --force-with-lease origin <branch_name> branch_name【分支名】 二、拓展 1、git bash 1、进入任意磁盘 cd 磁盘…

Golang使用etcd构建分布式锁案例

在本教程中&#xff0c;我们将学习如何使用Go和etcd构建分布式锁系统。分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要。它有助于维护一致性&#xff0c;防止竞争条件&#xff0c;并确保在任何给定时间只有一个进程独占访问资源。 我们将使用Go作为编程语言&am…

开源数据同步中间件(Dbsyncer)简单玩一下 mysql to mysql 的增量,全量配置

一、什么是Dbsyncer 1、介绍 Dbsyncer是一款开源的数据同步中间件&#xff0c;提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景&#xff0c;支持上传插件自定义同步转换业务&#xff0c;提供监控全量和增量数据统计图、应用性能预警…

element-plus的el-tree的双向绑定

el-tree改造了下 可选可取消 有默认值 不包含父级id&#xff08;也可打开注释 包含父级id&#xff09; 默认展开 点击节点也可触发选择 节点内容自定义 <template><div class"absolute"><el-scrollbar class"pall"><div class"…