Flink1.18 & YARN 单作业模式部署

单作业模式:提交作业时才启动Flink集群。不用事先启动,直接flink run即可,注意需要添加-t yarn-per-job参数用于区分。
YARN上部署的过程:
客户端把 Flink 应用提交给 Yarn 的 ResourceManager,Yarn 的
ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上,Flink 会部署 JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。
本文基于 Hadoop-3.3.6分布式集群搭建步骤

1.修改Hadoop环境变量,增加一些

vi /etc/profile.d/hadoop.sh

修改为如下:

export HADOOP_HOME=/usr/hadoop/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`

刷新

source /etc/profile

2.启动Hadoop集群

1.在hadoop02节点启动HDFS

sbin/start-dfs.sh

2.在配置了ResourceManager的节点(hadoop03)启动YARN

位于$HADOOP_HOME/sbin/start-yarn.sh

sbin/start-yarn.sh

3.单作业模式部署

1.推送端运行netcat

作业基于此文章打包 Flink Java Demo
因此在提交任务前需要先在推送端运行netcat

nc -lp 7878

2.提交任务

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

/usr/flink/flink-1.18.0/bin/flink run -d -t yarn-per-job -c cn.coreqi.WordCountStreamUnboundedDemo /home/FlinkTutorial-1.0-SNAPSHOT.jar

如果抛出 classloader.check-leaked-classloader异常,如下图
image
则需要在flink的配置文件flink-conf.yaml中配置

classloader.check-leaked-classloader: false

访问:http://192.168.58.131:8088/cluster

4.查看或取消作业

# 通过list查找到应用的jobId
/usr/flink/flink-1.18.0/bin/flink list -t yarn-per-job -Dyarn.application.id=application_1705543347998_0005
# 取消作业
/usr/flink/flink-1.18.0/bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_1705543347998_0003 <jobId>
/usr/flink/flink-1.18.0/bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_1705543347998_0005 3e4fbea5c58ed63a81cf7475ccbbf391

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

也可以在YARN的管理页面或者Flink WEB UI页面取消作业

posted @ 2024-01-18 09:57  SpringCore  阅读(279)  评论(0编辑  收藏  举报