Flink 使用之 on yarn 作业提交

Flink 使用介绍相关文档目录

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之后原先的ynmyqu等参数不在生效。需要使用-D指定。

  • -Dyarn.application.name=指定app name
  • -Dyarn.application.queue=指定提交的队列
  • -Dyarn.application.node-label=指定使用的标签资源

你可能感兴趣的:(Flink 使用之 on yarn 作业提交)