Flink 使用介绍相关文档目录
作业提交方式
参考链接:YARN | Apache Flink
Flink作业提交的方式分为application模式,per-job模式和session模式。
per-job模式
在Yarn创建一个Flink集群,然后在提交任务客户端所在机器本地运行作业jar的main方法,提交生成的JobGraph到Flink集群的JobManager。如果附带--detached
参数,提交的作业被accept的时候,客户端会停止运行(命令行不用一直开着,生产环境必须。开发测试时可不带--detached
参数,通过命令行查看运行日志)。
实际生产中推荐使用此模式。每个作业都使用单独的Flink集群,它们消耗的资源是互相隔离的,一个作业的崩溃不会影响到其他作业。
flink run -t yarn-per-job --detached /path/to/job.jar
注意:per-job模式已在1.15版本中废弃,不建议使用。
session模式
首先启动Flink Yarn Session,它是一个常驻与Yarn的Flink集群。启动成功后,无论是否有作业执行,或者作业是否执行完毕,该session始终保持运行。启动yarn session的方法如下:
export HADOOP_CLASSPATH=`hadoop classpath`
./bin/yarn-session.sh --detached
yarn-session支持的相关参数解释:
- -d/--detached: Detach模式,session启动成功后client停止运行。不用保持控制台一直开启。
- -s: 指定每个TaskManager的slot个数。
- -nm: Application名称
- -jm: Job Manager 容器的内存
- -tm: Task Manager 容器的内存
- -t: 传送文件至集群,使用相对路径。程序中读取文件仍使用相对路径
- -qu: 指定使用的Yarn队列
- -nl: 指定使用的标签资源
提交作业到Yarn session:
flink run -t yarn-session \
-Dyarn.application.id=application_XXXX_YY \
/path/to/job.jar
停止Flink Yarn session可以通过Yarn UI的kill按钮。当然也可以通过如下方式:
echo "stop" | ./bin/yarn-session.sh -id application_XXXXX_XXX
注意:一个Flink Yarn Session可以同时跑多个Flink作业。
application模式
和per-job模式类似,提交一次任务会在Yarn运行一个Flink集群。不同之处为作业jar包的main方法在Yarn集群的JobManager上运行,而不是提交作业的client端运行。作业执行完毕后,Flink on yarn集群会被关闭。
flink run-application -t yarn-application /path/to/job.jar
application模式的好处是Flink yarn集群可以直接从HDFS上查找并下载作业jar以及所需依赖,避免了从client机器上传。
flink run-application -t yarn-application \
-Dyarn.provided.lib.dirs="hdfs://myhdfs/my-remote-flink-dist-dir" \
hdfs://myhdfs/jars/my-application.jar
其中yarn.provided.lib.dirs
为Flink作业所需依赖包的地址。
注意:从Flink1.12开始使用
-t
参数替代-m
参数。使用-t
之后原先的ynm
,yqu
等参数不在生效。需要使用-D
指定。
- -Dyarn.application.name=指定app name
- -Dyarn.application.queue=指定提交的队列
- -Dyarn.application.node-label=指定使用的标签资源