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
异常,如下图
则需要在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,
也可以在YARN的管理页面或者Flink WEB UI页面取消作业