首页 > 其他分享 >Flink On Yarn运行模式:会话模式部署、单作业模式部署、应用模式部署

Flink On Yarn运行模式:会话模式部署、单作业模式部署、应用模式部署

时间:2024-10-31 17:20:54浏览次数:5  
标签:1.17 Flink 部署 flink YARN application 模式 atguigu hadoop102

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

1 相关准备和配置

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

$ sudo vim /etc/profile.d/my_env.sh

HADOOP_HOME=/opt/module/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`

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

[atguigu@hadoop102 hadoop-3.3.4]$ start-dfs.sh
[atguigu@hadoop103 hadoop-3.3.4]$ start-yarn.sh

(3)在hadoop102中执行以下命令启动netcat。

[atguigu@hadoop102 flink-1.17.0]$ nc -lk 7777

2 会话模式部署

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

1)启动集群

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

[atguigu@hadoop102 flink-1.17.0]$ bin/yarn-session.sh -nm test

可用参数解读:

  • -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的会话模式也不会把集群资源固定,同样是动态分配的。

YARN Session启动之后会给出一个Web UI地址以及一个YARN application ID,如下所示,用户可以通过Web UI或者命令行两种方式提交作业。

2022-11-17 15:20:52,711 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Found Web Interface hadoop104:40825 of application 'application_1668668287070_0005'.
JobManager Web Interface: http://hadoop104:40825

2)提交作业

(1)通过Web UI提交作业
这种方式比较简单,与前文所述Standalone部署模式基本相同。
在这里插入图片描述

(2)通过命令行提交作业

① 将FlinkTutorial-1.0-SNAPSHOT.jar任务上传至集群。

② 执行以下命令将该任务提交到已经开启的Yarn-Session中运行。

[atguigu@hadoop102 flink-1.17.0]$ bin/flink run
-c com.atguigu.wc.SocketStreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar

客户端可以自行确定JobManager的地址,也可以通过-m或者-jobmanager参数指定JobManager的地址,JobManager的地址在YARN Session的启动页面中可以找到。

③ 任务提交成功后,可在YARN的Web UI界面查看运行情况。hadoop103:8088

在这里插入图片描述
从上图中可以看到我们创建的Yarn-Session实际上是一个Yarn的Application,并且有唯一的Application ID。

④也可以通过Flink的Web UI页面查看提交任务的运行情况,如下图所示。
在这里插入图片描述

3 单作业模式部署

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

[atguigu@hadoop102 flink-1.17.0]$ bin/flink run -d -t yarn-per-job -c com.atguigu.wc.SocketStreamWordCount FlinkTutorial-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配置文件中设置

[atguigu@hadoop102 conf]$ vim flink-conf.yaml

classloader.check-leaked-classloader: false

(2)在YARN的ResourceManager界面查看执行情况。

在这里插入图片描述
点击可以打开Flink Web UI页面进行监控,如下图所示:
在这里插入图片描述
(3)可以使用命令行查看或取消作业,命令如下。

[atguigu@hadoop102 flink-1.17.0]$ bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY

[atguigu@hadoop102 flink-1.17.0]$ bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY <jobId>

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

4 应用模式部署

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

1)命令行提交

(1)执行命令提交作业。

[atguigu@hadoop102 flink-1.17.0]$ bin/flink run-application -t yarn-application -c com.atguigu.wc.SocketStreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar 

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

[atguigu@hadoop102 flink-1.17.0]$ bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY

[atguigu@hadoop102 flink-1.17.0]$ bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>

2)上传HDFS提交

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

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

[atguigu@hadoop102 flink-1.17.0]$ hadoop fs -mkdir /flink-dist
[atguigu@hadoop102 flink-1.17.0]$ hadoop fs -put lib/ /flink-dist
[atguigu@hadoop102 flink-1.17.0]$ hadoop fs -put plugins/ /flink-dist

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

[atguigu@hadoop102 flink-1.17.0]$ hadoop fs -mkdir /flink-jars
[atguigu@hadoop102 flink-1.17.0]$ hadoop fs -put FlinkTutorial-1.0-SNAPSHOT.jar /flink-jars

(3)提交作业

[atguigu@hadoop102 flink-1.17.0]$ bin/flink run-application -t yarn-application	-Dyarn.provided.lib.dirs="hdfs://hadoop102:8020/flink-dist"	-c com.atguigu.wc.SocketStreamWordCount  hdfs://hadoop102:8020/flink-jars/FlinkTutorial-1.0-SNAPSHOT.jar

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

标签:1.17,Flink,部署,flink,YARN,application,模式,atguigu,hadoop102
From: https://blog.csdn.net/a772304419/article/details/143393143

相关文章

  • [Flink/FlinkCDC] 实践总结:Flink 1.12.6 升级 Flink 1.15.4
    FlinkDataStream/API未变的重要特性虽然官宣建议弃用JDK8,使用JDK11+;但:仍继续支持JDK8个人猜测:JDK8的用户群实在太大,牵一发而动全身,防止步子扯太大,遏制自身项目的发展势头。依赖模块的变化版本变化flink.version:1.12.6=>1.15.4flink.connector.version:......
  • vue3 类组件装饰器模式配置
    2024年10月31日vue3支持装饰器模式插件借助插件vue-facing-decorator实现类组件装饰器转换npminstall--save-devvue-facing-decorator@rollup/plugin-babel@babel/plugin-proposal-decorators@babel/plugin-proposal-class-propertiesvite.config.ts配置//第一种支......
  • uniapp - 详细实现移动端公众号 H5 网页授权登录流程及示例代码,申请测试公众号全流程
    前言Vue版本,请访问这篇文章。在uni-appH5网站平台开发中,详解微信公众号网页接入微信授权登录示例代码,附带申请测试公众号全流程及配置教程,提供前端h5页面公众号网页实现授权登陆并获取用户昵称头像数据的示例源码,用自己项目跑出来的本地局域网IP段就可以拉起公众......
  • 【热门IT技术项目分享】-云原生应用部署-电商网站
    现在如果问什么行业最火,很多人第一反应肯定就是IT。的确,这些年随着互联网的不断发展,IT热门众所周知。那么就一起来说说,IT行业里,哪些技术更热门。热门IT技术项目分享基于深度学习的图像识别系统: 使用TensorFlow或PyTorch框架,训练模型来识别各种图像,例如人脸识别、物体识别等......
  • AP5126 是一款 PWM 工作模式,高效率、外围简单、内置功率管,适用于 12-80V 输入的高精
    高性能摩托车灯降压恒流ic全亮/半亮/循环模式短路保护AP5126产品描述AP5126是一款PWM工作模式,高效率、外围简单、内置功率管,适用于12-80V输入的高精度降压LED恒流驱动芯片。输出最大功率可达15W,最大电流1.2A。AP5126可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮/......
  • AP5127 是一款 PWM 工作模式,高效率、外围简单、内置功率管,适用于 12-100V 输入的高精
    产品描述AP5127是一款PWM工作模式,高效率、外围简单、内置功率管,适用于12-100V输入的高精度降压LED恒流驱动芯片。输出最大功率可达25W,最大电流2.5A。AP5127可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮/循环模式。AP5127工作频率固定在140KHZ,同时内置抖频电路,......
  • AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管,适用于5V~100V输入的高精度
    产品描述AP5216是一款PWM工作模式,高效率、外围简单、内置功率管,适用于5V~100V输入的高精度降压LED恒流驱动芯片。输出最大功率可达9W,最大电流1.0A。AP5216可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮模式。AP5216工作频率固定在130KHZ,同时内置抖频电路,可以降低......
  • Prometheus01 Prometheus基础, 部署与配置, Node Exporter, Pushgateway, PromQL 运算
    云原生监控系统Prometheus1Prometheus介绍1.2监控内容和方法1.2.2监控方法 Google的四个黄金指标1.延迟(Latency)服务请求所需要的时长,例如HTTP请求平均延迟2.流量(Traffic),也称为吞吐量3.错误(Errors)4.饱和度(Saturation)资源的整体利用率,包括CPU(容量、配......
  • Docker+Jenkins:一键自动化部署,让你的项目管理飞跃!
    使用Docker安装Jenkins并实现项目自动化部署是一种高效且便捷的方法。以下是详细的步骤和代码示例,帮助你完成这一过程。一、准备工作安装Docker:确保你的系统已经安装了Docker。如果没有安装,请参考 Docker官方文档进行安装。拉取Jenkins镜像:从DockerHub上拉取Je......
  • 一款连续电感电流导通模式的降压恒流源
    AP5165是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从6V到30V,输出电流可调,最大可达1.2A。根据不同的输入电压和外部器件,AP5165可以驱动高达数十瓦的LED。AP5165内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模拟......