Flink1.18 & YARN 应用模式部署【推荐】

应用模式:用户代码在JobManger上解析、运行,而不是在客户端上进行

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.提交任务

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

2.*提交任务加速版

YARN的工作机制需要每次将Flink的库和插件以及任务的jar包上传到HDFS
如果我们手动将Flink的库和插件提前上传到HDFS,甚至将任务的jar包也提前上传到HDFS,将会加速任务的执行时间。

1.将Flink的库和插件上传至HDFS
hadoop fs -mkdir /flink-dist
hadoop fs -put /usr/flink/flink-1.18.0/lib /flink-dist
hadoop fs -put /usr/flink/flink-1.18.0/plugins /flink-dist

访问http://192.168.58.130:9870/explorer.html#/ 查看上传结果

2.将任务jar包上传至HDFS
hadoop fs -mkdir /flink-jars
hadoop fs -put /home/FlinkTutorial-1.0-SNAPSHOT.jar /flink-jars
3.提交任务
/usr/flink/flink-1.18.0/bin/flink run-application -t yarn-application -Dyarn.provided.lib.dirs="hdfs://192.168.58.130:8020/flink-dist" -c cn.coreqi.WordCountStreamUnboundedDemo hdfs://192.168.58.130:8020/flink-jars/FlinkTutorial-1.0-SNAPSHOT.jar

4.查看或取消作业

# 通过list查找到应用的jobId
/usr/flink/flink-1.18.0/bin/flink list -t yarn-application -Dyarn.application.id=application_1705543347998_0006
# 取消作业
/usr/flink/flink-1.18.0/bin/flink cancel -t yarn-application -Dyarn.application.id=application_1705543347998_0006 <jobId>
/usr/flink/flink-1.18.0/bin/flink cancel -t yarn-application -Dyarn.application.id=application_1705543347998_0006 0cc4bc91f31fbc6fd26189ce5ae242c1

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

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

posted @ 2024-01-18 15:42  SpringCore  阅读(564)  评论(0编辑  收藏  举报