如图所示:
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
启动加载图:
访问:http://flink106:33122
当然也可以访问:http://flink105:8088
//查看进程日志
[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]#
2、第二种方式(推荐)
(1)使用这种方式,建议执行这个命令放在后台
//防止窗口关闭后,就停止服务
[root@Flink105 flink-1.7.0]# ./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 -d
加载的信息:
访问页面:http://flink105:8088
跳转至
我们执行这条命令:
[root@Flink105 flink-1.7.0]# ./bin/yarn-session.sh -id Application application_1583504611835_0001
发现退出命令,这个Web页面还在
访问:http://flink105:8088
(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
访问:http://flink105:8088
跳转至
(5)查看配置信息:
[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
加载过程:
访问:http://flink105:8088
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