如图所示:

flink 代码提交到yarn flink提交yarn命令_flink

1、Flink on Yarn 的两种使用方式

第一种【yarn-session.sh(开辟资源)+flink run(提交任务)】

(1)修改etc/hadoop/yarn-site.xml

//添加参数
<property>  
    <name>yarn.nodemanager.vmem-check-enabled</name>  
    <value>false</value>  
</property>

(2)修改后的文件,拷贝文件到其他机器上

[root@Flink105 hadoop-2.7.2]# scp -rq etc/hadoop/yarn-site.xml flink106:/opt/hadoop/module/hadoop-2.7.2/etc/hadoop/

[root@Flink105 hadoop-2.7.2]# scp -rq etc/hadoop/yarn-site.xml flink107:/opt/hadoop/module/hadoop-2.7.2/etc/hadoop/

(3)启动hadoop集群

[root@Flink105 hadoop-2.7.2]# sbin/start-all.sh

(4)启动一个一直运行的flink集群

[root@Flink105 flink-1.7.0]# ./bin/yarn-session.sh -n 2 -jm 1024

启动加载图:

flink 代码提交到yarn flink提交yarn命令_flink_02


访问:http://flink106:33122

flink 代码提交到yarn flink提交yarn命令_hadoop_03


当然也可以访问:http://flink105:8088flink 代码提交到yarn flink提交yarn命令_flink_04


//查看进程日志
[root@Flink105 hadoop-2.7.2]# jps -l
9505 org.apache.hadoop.hdfs.server.namenode.NameNode
10721 sun.tools.jps.Jps
9634 org.apache.hadoop.hdfs.server.datanode.DataNode
10611 org.apache.flink.yarn.cli.FlinkYarnSessionCli
9959 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
10073 org.apache.hadoop.yarn.server.nodemanager.NodeManager
8349 org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint
9806 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode

当然,我们可以通过yarn来停止它们job工作进程

[root@Flink105 flink-1.7.0]# yarn application -kill application_1583504611835_0001

20/03/06 14:40:08 INFO client.RMProxy: Connecting to ResourceManager at Flink105/192.168.219.115:8032
Killing application application_1583504611835_0001
20/03/06 14:40:09 INFO impl.YarnClientImpl: Killed application application_1583504611835_0001
[root@Flink105 flink-1.7.0]#

flink 代码提交到yarn flink提交yarn命令_hadoop_05


2、第二种方式(推荐)

(1)使用这种方式,建议执行这个命令放在后台

//防止窗口关闭后,就停止服务
[root@Flink105 flink-1.7.0]# ./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 -d

加载的信息:

flink 代码提交到yarn flink提交yarn命令_flink_06


访问页面:http://flink105:8088

flink 代码提交到yarn flink提交yarn命令_hdfs_07


跳转至

flink 代码提交到yarn flink提交yarn命令_flink 代码提交到yarn_08

我们执行这条命令:

flink 代码提交到yarn flink提交yarn命令_hadoop_09

[root@Flink105 flink-1.7.0]# ./bin/yarn-session.sh -id Application application_1583504611835_0001

发现退出命令,这个Web页面还在

访问:http://flink105:8088

flink 代码提交到yarn flink提交yarn命令_hdfs_10

(2)查看本机磁盘hdfs文件有哪些

[root@Flink105 flink-1.7.0]# hdfs  dfs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2020-03-06 14:25 /user

(3)将LICENSE文件上传到hdfs的根目录上

[root@Flink105 flink-1.7.0]# hdfs dfs -put LICENSE /
[root@Flink105 flink-1.7.0]#

(4)执行任务(开辟资源+提交任务)

[root@Flink105 flink-1.7.0]# ./bin/flink run ./examples/batch/WordCount.jar -input hdfs://flink105:9000/LICENSE -output hdfs://flink105:9000/wordcount-result.txt

flink 代码提交到yarn flink提交yarn命令_flink 代码提交到yarn_11


访问:http://flink105:8088

flink 代码提交到yarn flink提交yarn命令_flink 代码提交到yarn_12


跳转至

flink 代码提交到yarn flink提交yarn命令_hadoop_13

(5)查看配置信息:

flink 代码提交到yarn flink提交yarn命令_flink_14

[root@Flink105 flink-1.7.0]# more /tmp/.yarn-properties-root

#Generated YARN properties file
#Fri Mar 06 14:51:34 GMT 2020
parallelism=2
dynamicPropertiesString=
applicationID=application_1583504611835_0002
[root@Flink105 flink-1.7.0]#

注意:client端必须要设置YARN_CONF_DIR或者HADOOP_CONF_DIR或者HADOOP_HOME环境变量,通过这个环境变量来读取YARN和HDFS的配置信息,否则启动会失败

(6)启动

[root@Flink105 flink-1.7.0]# ./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 ./examples/batch/WordCount.jar

加载过程:

flink 代码提交到yarn flink提交yarn命令_flink 代码提交到yarn_15


flink 代码提交到yarn flink提交yarn命令_hdfs_16


flink 代码提交到yarn flink提交yarn命令_hdfs_17


访问:http://flink105:8088

flink 代码提交到yarn flink提交yarn命令_flink_18


3、./bin/flink run 命令分析

run [OPTIONS]
“run” 操作参数:
-c,–class 如果没有在jar包中指定入口类,则需要在这里通过这个参数指定
-m,–jobmanager host:port 指定需要连接的jobmanager(主节点)地址,使用这个参数可以指定一个不同于配置文件中的jobmanager
-p,–parallelism 指定程序的并行度。可以覆盖配置文件中的默认值。
默认查找当前yarn集群中已有的yarn-session信息中的jobmanager【/tmp/.yarn-properties-root】:
./bin/flink run ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
连接指定host和port的jobmanager:
./bin/flink run -m hadoop100:1234 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
启动一个新的yarn-session:
./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
注意:yarn session命令行的选项也可以使用./bin/flink 工具获得。它们都有一个y或者yarn的前缀
例如:./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar