flink提交作业到yarn

请注意,客户端需要YARN_CONF_DIR或HADOOP_CONF_DIR环境变量来读取YARN和HDFS配置。没配置的话,就默认去HADOOP_CLASSPATH里去寻找,而cdh的`hadoop classpath`里恰好有/etc/hadoop/conf。在flink1.13以前,lib下是有hadoop相关的jar包的,但是1.13以后被独立出去了,所以需要加上环境变量 export HADOOP_CLASSPATH=`hadoop classpath`,可以加在config.sh的开头。相关的属性配置都可以用-D来设置,比如应用程序名设置:-Dyarn.application.name=xxx,内存设置:-Dtaskmanager.memory.process.size=4096m。

1)提交一个长运行的flink cluster到yarn(Flink on Yarn Session Mode)
./bin/yarn-session.sh
可以指定对应的一些参数配置,需要帮助则-help提示
在flink yarn Session Mode模式下,又分2种模式,即
attached mode(附加模式)和detached mode(分离模式)
attached mode 就是 yarn-session.sh客户端将Flink cluster提交给YARN,但客户端继续运行,跟踪集群的状态。如果集群失败,客户端将显示错误。如果客户端被终止,它也会发出关闭集群的信号。即客户端退出,flink cluster也退出,类似与yarn client。
detached mode(参数加-d或--detached)就是 yarn-session.sh客户端将Flink cluster提交给YARN,然后客户端返回。需要调用客户端或YARN工具来停止Flink集群。即客户端退出,但flink cluster不退出,类似yarn cluster。

用上面的yarn-session.sh提交flink cluster到yarn后,可以提交job到这个flink cluster上。
方式如下:

./bin/flink run -t yarn-session ...

会话模式会创建一个隐藏的YARN属性文件/tmp/.yarn-properties-,当命令行接口提交作业时会根据读取该文件发现YARN cluster集群来提交。(同理如果同时有提交的yarn提交到Standalone,则提交到Standalone时也要指定 -t remote)

如果有多个flink cluster存在于yarn上的话,这里需要指定提交job到某一个flink cluster上。那就在命令行界面中手动指定目标YARN cluster(即指定运行在yarn上的flink cluster应用的appid)。
即加上指定 -Dyarn.application.id=appid
如下:

./bin/flink run -t yarn-session \
  -Dyarn.application.id=application_XXXX_YY \
  ./examples/streaming/TopSpeedWindowing.jar

2)提交一个flink job到yarn(Flink on Yarn Per-Job Mode)
Per-Job Cluster Mode将在YARN上启动一个Flink集群,然后在本地运行提供的应用程序jar(即main方法运行在本地client中),最后将JobGraph提交给YARN上的JobManager。该模式下也可以指定--detached参数,指定了则一旦作业提交被yarn接受,客户端将停止。

./bin/flink run -t yarn-per-job -p 4 \
-Djobmanager.memory.process.size=2048m \
-Dtaskmanager.memory.process.size=4096m \ 
./examples/batch/WordCount.jar

需要帮助则:
./bin/flink run -help

3)以应用程序模式运行一个应用(Flink on Yarn Application Mode)

Application Mode将在YARN上启动一个Flink集群,其中应用程序jar的main()方法将在YARN中的JobManager上执行。应用程序一完成,集群就会关闭。

./bin/flink run-application -t yarn-application ./examples/batch/WordCount.jar

注意:除了-t之外,所有其他配置参数,比如用于引导应用程序状态的保存点的路径、应用程序并行度或所需的作业管理器/任务管理器内存大小,都可以由其配置选项(前缀为-D)指定。
如:

./bin/flink run-application -t yarn-application \
-Djobmanager.memory.process.size=2048m \
-Dtaskmanager.memory.process.size=4096m \
./examples/batch/WordCount.jar

为了释放Application Mode的全部潜力,请考虑与yarn.provided.lib.dirs配置项一起使用,将flink的依赖jar、应用程序jar上传到集群中所有节点都可以访问的位置。将使作业提交变得更加轻量级,因为所需的Flink jar和应用程序jar将由指定的远程位置提取,而不是由客户机发送到集群。 即加上配置项 -Dyarn.provided.lib.dirs="hdfs://xxx"

另外注意使用以上的方法来提交即:

./bin/flink run -t yarn-session xxx

./bin/flink run -t yarn-per-job xxx

./bin/flink run-application -t yarn-application xxx

有啥参数可以使用-D来指定,不要使用Options for yarn-cluster mode:下的那些参数比如-ynm、-yjm、-ytm等,不生效。

你可能感兴趣的:(flink,flink,大数据)