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

【Flink】运行模式

目录

  • Standalone 运行模式
    • 会话模式部署
    • 单作业模式部署
    • 应用模式部署
  • YARN 运行模式
    • 会话模式部署
    • 单作业模式部署
    • 应用模式部署
  • K8S运行模式

Standalone 运行模式

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

会话模式部署

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

在这里插入图片描述

单作业模式部署

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

应用模式部署

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

具体步骤如下:

监控端口
在这里插入图片描述

将应用程序的jar包放到lib目录下
脚本会到lib目录扫描所有的jar

执行以下命令,启动JobManager

mv FlinkTutorial-1.17-1.0-SNAPSHOT.jar lib/
bin/standalone-job.sh start --job-classname SocketStreamWordCount

在这里插入图片描述

启动TaskManager

bin/taskmanager.sh start

在这里插入图片描述

端口输入数据
在这里插入图片描述
webui查看

在这里插入图片描述

如果希望停掉集群,同样可以使用脚本,命令如下

bin/taskmanager.sh stop
bin/standalone-job.sh stop

在这里插入图片描述

YARN 运行模式

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

相关准备和配置

在将Flink任务部署至YARN集群之前,需要确认集群是否安装有Hadoop,保证Hadoop版本至少在2.2以上,并且集群中安装有HDFS服务。
具体配置步骤如下:

  1. 配置环境变量,增加环境变量配置如下:
vim /etc/profileHADOOP_HOME=/usr/local/soft/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
  1. 使环境生效
    source /etc/profile

  2. 启动Hadoop集群,包括HDFS和YARN。

start-all.sh
在这里插入图片描述

会话模式部署

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

1)启动集群
(1)启动Hadoop集群(HDFS、YARN)。
(2)执行脚本命令向YARN集群申请资源,开启一个YARN会话,启动Flink集群。

yarn-session.sh -nm mySession1

在这里插入图片描述
在这里插入图片描述

可用参数解读:
-d:分离模式,如果你不想让Flink YARN客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session也可以后台运行。

-jm(–jobManagerMemory):配置JobManager所需内存,默认单位MB。

-nm(–name):配置在YARN UI界面上显示的任务名。

-qu(–queue):指定YARN队列名。

-tm(–taskManager):配置每个TaskManager所使用内存。

注意:Flink1.11.0版本不再使用-n参数和-s参数分别指定TaskManager数量和slot数量,YARN会按照需求动态分配TaskManager和slot。所以从这个意义上讲,YARN的会话模式也不会把集群资源固定,同样是动态分配的。

webui查看

在这里插入图片描述

此时并未提交作业

使用
webui提交作业

在这里插入图片描述
可以看到动态分配了taskmanager

通过命令行提交

flink run -m slave1:8081 -c SocketStreamWordCount ../lib/FlinkTutorial-1.17-1.0-SNAPSHOT.jar

在这里插入图片描述

如何关闭会话?

方式一:

开启会话前

在这里插入图片描述

开启会话后:
在这里插入图片描述

在这里插入图片描述

点到任务里面去,点击Kill Application即可关闭

在这里插入图片描述
关闭会话后:
在这里插入图片描述

方式二:

重新开启会话

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

在这里插入图片描述
最下面有提示如何关闭

输入该命令关闭即可

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

在这里插入图片描述

关闭成功

单作业模式部署

提交作业时才启动Flink集群

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

执行命令提交作业

bin/flink run -d -t yarn-per-job -c SocketStreamWordCount lib/FlinkTutorial-1.17-1.0-SNAPSHOT.jar

在这里插入图片描述

在这里插入图片描述
注意:如果启动过程中报如下异常。

Exception in thread “Thread-5” java.lang.IllegalStateException: Trying to access closed classloader. Please check if you store classloaders directly or indirectly in static fields. If the stacktrace suggests that the leak occurs in a third party library and cannot be fixed immediately, you can disable this check with the configuration ‘classloader.check-leaked-classloader’.
at org.apache.flink.runtime.execution.librarycache.FlinkUserCodeClassLoaders

解决办法:在 flink 的 /opt/module/flink-1.17.0/conf/flink-conf.yaml 配置文件中设置

 vim flink-conf.yaml
classloader.check-leaked-classloader: false

可以使用命令行查看或取消作业,命令如下。
bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY

bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY

这里的application_XXXX_YY是当前应用的ID,是作业的ID。注意如果取消作业,整个Flink集群也会停掉。

应用模式部署

命令行提交

bin/flink run-application -t yarn-application -c SocketStreamWordCount lib/FlinkTutorial-1.17-1.0-SNAPSHOT.jar

在这里插入图片描述

在这里插入图片描述

在命令行中查看或取消作业。

bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY
bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>

上传HDFS提交

可以通过yarn.provided.lib.dirs配置选项指定位置,将flink的依赖上传到远程。

(1)上传flink的lib和plugins到HDFS上

 hadoop fs -mkdir /flink-dist
hadoop fs -put lib/ /flink-dist
hadoop fs -put plugins/ /flink-dist

(2)上传自己的jar包到HDFS

hadoop fs -mkdir /flink-jars
hadoop fs -put FlinkTutorial-1.0-SNAPSHOT.jar /flink-jars

(3)提交作业

bin/flink run-application -t yarn-application -Dyarn.provided.lib.dirs=“hdfs://master:8020/flink-dist” -c SocketStreamWordCount hdfs://master:8020/flink-jars/FlinkTutorial-1.0-SNAPSHOT.jar

这种方式下,flink本身的依赖和用户jar可以预先上传到HDFS,而不需要单独发送到集群,这就使得作业提交更加轻量了。

K8S运行模式

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

http://www.dtcms.com/a/350197.html

相关文章:

  • Rust Async 异步编程(五):async/.await
  • 怎么把iphone文件传输到windows电脑?分场景选方法
  • 【ansible】roles的介绍
  • 【完整源码+数据集+部署教程】化妆品实例分割系统源码和数据集:改进yolo11-DynamicConv
  • 【C#】.net framework 4.8非常久远的框架如何把日期格式/Date(1754548600000)/以及带T的2025-08-07T14:36:40时间格式转为统一的格式输出
  • 并发编程原理与实战(二十六)深入synchronized底层原理实现
  • 京东API分类接口实战指南:获取各类商品信息
  • Microsoft 365 中的 School Data Sync 功能深度解析:教育机构数字化管理的智能核心
  • Android音频学习(十五)——打开输出流
  • 如何用DeepSeek让Excel数据处理自动化:告别重复劳动的智能助手
  • 面试手写 Promise:链式 + 静态方法全实现
  • 扣子智能体商业化卡在哪?井云系统自动化交易+私域管理,闭环成交全流程拆解
  • 3491定期复盘代码实现设计模式的忌假应用
  • 使用Docker配置Redis Stack集群的步骤
  • React 19 与 Next.js:利用最新 React 功能
  • SQL性能调优
  • HTTP、HTTPS 与 WebSocket 详解
  • UDS诊断案例-新能源汽车电池管理系统(BMS)诊断
  • Git提交流程与最佳实践
  • debug kernel 的一些trace的方法
  • 嵌入式Linux内核编译与配置
  • GraphRAG
  • 掌握C++ std::invoke_result_t:类型安全的函数返回值提取利器
  • VSCode远程连接阿里云ECS服务器
  • ABB机器人焊接混合气节气阀
  • Chrome GPU 加速优化配置(前端 3D 可视化 / 数字孪生专用)
  • LangChain4J-(2)-高阶API与低阶API
  • 从人工巡检到AI预警:智慧工地如何用技术重构施工安全体系
  • Dubbo3.3 Idea Maven编译命令
  • 指纹手机技术支持体系:从核心技术到场景化落地保障