当前位置: 首页 > 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.xdnf.cn/news/1363357.html

相关文章:

  • 文献阅读笔记:KalmanNet-融合神经网络和卡尔曼滤波的部分已知动力学状态估计
  • Zabbix Vs. Grafana
  • win11中系统的WSL安装Centos以及必要组件
  • nmcli命令详解
  • Docker:网络连接
  • SQL性能调优
  • 2025年8月25日-8月31日(qtopengl+ue独立游戏)
  • 告别“复制粘贴”式换肤:我用Adobe XD组件变体与CC库,构建多品牌设计系统架构
  • THM Bricks Heist靶机
  • 新的 macOS 安装程序声称能够快速窃取数据,并在暗网上销售
  • 文入门Ubuntu:从零到精通的Linux之旅
  • 【ARM】MDK在debug模式下断点的类型
  • 中介者模式及优化
  • 使用EasyExcel根据模板导出文件
  • imx586手册和相机寄存器部分解读
  • 【Springboot】依赖注入方式
  • Linux 离线安装lrzsz(rz、sz上传下载小插件)
  • IntelliJ IDEA 新手入门教程-Java、Web、Maven创建(带图解)
  • 疯狂星期四文案网第49天运营日记
  • 使用现代 <img> 元素实现完美图片效果(2025 深度实战版)
  • 【图像处理基石】基于Real-ESRGAN的实时图像超分辨率技术实现
  • MongoDB vs MySQL:NoSQL 和 SQL 的核心区别与适用场景
  • Portswigger靶场之Visible error-based SQL injection通关秘籍
  • ADQ3系列USB 3.2接口版本数字化仪隆重登场
  • 将本地jar包推到远程仓库
  • KeepAlived+Haproxy实现负载均衡(SLB)
  • 集成电路学习:什么是Caffe深度学习框架
  • 聊聊负载均衡架构
  • OpenGL 几何着色器
  • Linux学习-TCP网络协议(补充)