与单作业模式类似,直接执行flink run-application命令
$ bin/flink run-application -t yarn-application -c com.huft.flk117.demo.StreamSocketCnt job_jar/original-fk117-1.0-SNAPSHOT.jar
查看 web及yarn id
2.在命令行中查看或取消作业。
$ bin/flink list -t yarn-application -Dyarn.application.id=application_1715411206268_0004
$ bin/flink cancel -t yarn-application -Dyarn.application.id=application_1715411206268_0004 21694a9ed391ba08c992d579b0e67103
3.依赖及jar包存放hdfs,运行作业更轻量
可以通过yarn.provided.lib.dirs配置选项指定位置,将flink的依赖上传到远程。
3.1 上传flink的lib和plugins到HDFS上
$ hadoop fs -mkdir /flink-dist
$ hadoop fs -put lib/ /flink-dist
$ hadoop fs -put plugins/ /flink-dist
3.2 上传自己的jar包到HDFS
$ hadoop fs -mkdir /flink-jars
$ hadoop fs -put job_jar/original-fk117-1.0-SNAPSHOT.jar /flink-jars
3.3 提交作业
$ bin/flink run-application -t yarn-application -D yarn.provided.lib.dirs="hdfs://hdf1:8020/flink-dist" -c com.huft.flk117.demo.StreamSocketCnt hdfs://hdf1:8020/flink-jars/original-fk117-1.0-SNAPSHOT.jar
这种方式下,flink本身的依赖和用户jar可以预先上传到HDFS,而不需要单独发送到集群,这就使得作业提交更加轻量了
3.4 报错
java.lang.IllegalStateException: No ClusterClientFactory found. If you were targeting a Yarn cluster, please make sure to export the HADOOP_CLASSPATH environment variable or have hadoop in your classpath. For more information refer to the "Deployment" section of the official Apache Flink documentation.
执行 export HADOOP_CLASSPATH=hadoop classpath
无效
3.5
然后测试会话模式和单作业模式,是正常的。所以判断不是依赖问题
最后看命令行,发现参数这里是连着的,所以导致没识别hdfs上依赖(-D 参数原来和后面的yarn间没有空格,导致报错。上面语句已更改)
3.6 增加空格后运行正常