Flink提供了一个命令行接口,来运行并控制打包后的jar文件中的程序。其是Flink安装的一部分,在本地以及分布式模式下都可以使用。CLI命令接口位于:
<flink_home>/bin/flink
当提交Job后,其默认会连接到Flink的JobManager。
提交Flink的Job有一个前提,即JobManager必须处于运行中,Flink有3种运行运行模式:
1、本地模式:<flink-home>/bin/start-local.sh
2、集群模式:<flink-home>/bin/start-cluster.sh
3、Yarn或Mesos环境
1、使用语法
具体的语法参见:Command-Line Interface。
这里可将CLI的命令抽象为:
./flink <ACTION> [OPTIONS] [ARGUMENTS]
2、flink脚本
脚本文件:$FLINK_HOME/bin/flink
其主要是执行. “$bin”/config.sh来加载flink的环境配置信息,而config.sh则读取flink-conf.yaml、slaves、masters等来读取配置。
在flink脚本文件的最后(55行),执行了最终的Job:
exec $JAVA_RUN $JVM_ARGS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS"`" org.apache.flink.client.CliFrontend "$@"
这里就是用java命令来执行flink的类:org.apache.flink.client.CliFrontend
来完成。
例如,我的CLI命令是:
flink run -c com.toptrade.Job toptrade-flink-1.0.jar prod.properties
则flink做的事情是校验我的命令,并加载flink的环境配置、taskManagers、HA的机器配置、日志文件、ClassPath以及hadoop的配置等,并最终执行java运行命令,如下:
即指定:
1、/home/flink/java/jdk1.8.0_60/bin/java
2、-Dlog.file、-Dlog4j.configuration、-Dlogback.configurationFile
3、-classpath
4、执行org.apache