flink on yarn模式
- flink的任务也可以运行在yarn上面,将flnk的任务提交到yarn平台,通过yarn平台来实现我们的任务统一的资源调度管理,方便我们管理集群当中的CPU和内存等资源
- flink on yarn又分为两种模式
1:第一种模式:单个yarn session模式
- 这种方式需要先启动集群,然后在提交作业,接着会向yarn申请一块资源空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到yarn中的其中一个作业执行完成后,释放了资源,那下一个作业才会正常提交,实际工作当中一般不会使用这种模式
这种模式,不需要做任何配置,直接将任务提价到yarn集群上面去,我们需要提前启动hdfs以及yarn集群即可
- 第一步:修改yarn-site.xml配置为文件
cd /opt/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop
vim yarn-site.xml
# 修改为如下代码
<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<value>4</value>
<description>
The maximum number of application master execution attempts.
</description>
</property>
# 改后的配置文件拷贝到node02与node03服务器
scp yarn-site.xml node02:$PWD
scp yarn-site.xml node03:$PWD
# 重启yarn集群
- 第二步:修改flink配置文件
# node01执行以下命令更改flink配置文件
cd /opt/install/flink-1.8.1/conf
vim flink-conf.yaml
# 修改为
high-availability: zookeeper
high-availability.storageDir: hdfs://node01:8020/flink_yarn_ha
high-availability.zookeeper.path.root: /flink-yarn
high-availability.zookeeper.quorum: node01:2181,node02:2181,node03:2181
yarn.application-attempts: 10
#hdfs上面创建文件夹(为了区别standAlone模式从新重建文件夹)
hdfs dfs -mkdir -p /flink_yarn
- 第三步:在yarn当中启动flink集群
# node1执行以下命令 如果在启动的时候,yarn的内存太小,可能会报错误
cd /opt/install/flink-1.8.1/
bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 [-d]
# 如果在启动的时候,yarn的内存太小,可能会报以下错误
Diagnostics: Container [] is running beyond virtual memory limits. Current usage: 250.5 MB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing containerpid=6386,containerID=container_1521277661809_0006_01_000001
# 需要修改yarn-site.xml添加以下配置,然后重启yarn即可
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
- 第四步:查看yarn管理界面
- 问yarn的8088管理界面,发现yarn当中有一个应用:http://node01:8088/cluster。yarn当中会存在一个常驻的application,就是为我们flink单独启动的一个session
- 第五步:提交任务
# 创建测试文件
vim wordcount.txt
# 内容如下
hello world
flink hadoop
# hdfs上面创建文件夹并上传文件
hdfs dfs -mkdir -p /flink_input
hdfs dfs -put wordcount.txt /flink_input
# 提交任务到flink集群
cd /kkb/install/flink-1.8.1
bin/flink run ./examples/batch/WordCount.jar
-input hdfs://node01:8020/flink_input
-output hdfs://node01:8020/flink_output/wordcount-result.txt
第二种模式:多个yarn session模式
- 这种方式的好处是一个任务会对应一个job,即每提交一个作业会根据自身的情况,向yarn申请资源,直到作业执行完成,并不会影响下一个作业的正常运行,除非是yarn上面没有任何资源的情况下。
注意:client端必须要设置YARN_CONF_DIR或者HADOOP_CONF_DIR或者HADOOP_HOME环境变量,通过这个环境变量来读取YARN和HDFS的配置信息,否则启动会失败
不需要在yarn当中启动任何集群,直接提交任务即可
- 第一步:直接执行命令提交任务
cd /opt/install/flink-1.8.1/
bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ./examples/batch/WordCount.jar -input hdfs://node01:8020/flink_input -output hdfs://node01:8020/out_result/out_count.txt
- 第二步:查看输出结果
hdfs dfs -text hdfs://node01:8020/out_result/out_count.txt