![Flink与Kylin深度实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/467/37323467/b_37323467.jpg)
2.5 Flink on YARN模式
Flink任务也可以运行在YARN上面,将Flink任务提交到YARN平台可以实现统一的任务资源调度管理,方便开发人员管理集群中的CPU和内存等资源。如图2-1所示,Flink on YARN也有两种模式:单个YARN Session模式和多个YARN Session模式。
环境要求:Hadoop至少为2.2版;HDFS及YARN服务启动正常。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_01.jpg?sign=1739295019-x1U7ASlhnG7RCqAcCgNDaJUVt1GaiSaf-0-649ae1d23f1eaa0ac0fc66ba6fc1c218)
●图2-1 Flink on YARN模式
2.5.1 单个YARN Session模式
这种模式需要先启动集群,然后再提交作业,接着会向YARN申请资源空间,之后资源保持不变。如果资源不足,下一个作业就无法提交,只能等到YARN中的一个作业执行完成后释放资源,所以实际工作中一般不会使用这种模式。
这种模式不需要做任何配置,可以直接将任务提交到YARN集群,这之前需要提前启动HDFS以及YARN集群。
1.修改yarn-site.xml配置文件
在node01上执行以下命令开始修改yarn-site.xml。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_02.jpg?sign=1739295019-0h321LooXjWQWGzRshnPF5O3oLCNaPN6-0-1b99242381a743e8df799828526ee266)
添加以下配置属性到yarn-site.xml文件中。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_03.jpg?sign=1739295019-gNvy4AgFvhWasjdbBZUba5uMgcSKO3xE-0-6d31744a4d9ddd9a76e324d48dc2c671)
然后在node01上将修改后的配置文件复制到node02与node03服务器,命令如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_04.jpg?sign=1739295019-Zp9fGMxo6LL6h5imWCOooIoFZmV4AhPd-0-28132d8e3e44038fe0e776cc92098826)
之后重新启动YARN集群。
2.修改Flink配置文件
在node01上执行以下命令修改Flink配置文件。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_01.jpg?sign=1739295019-AaFz802iI9VcYwHvee1r3AYLyc2z3lU0-0-a8145e2e48eaec497f456611699255cc)
3.在HDFS上创建文件夹
命令如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_02.jpg?sign=1739295019-qgEHQ4vGkbL0tP60EFaDbbQm0oeDsGAJ-0-70a064f48e61a6b10a40b8aa3d17167c)
4.在YARN中启动Flink集群
直接在node01上执行以下命令,在YARN中启动一个全新的Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_03.jpg?sign=1739295019-ywlLi5T0pqrRurbUzYDIFv8buAYUq1Zb-0-aa0ac0ff8c7e0fed92abad7c7fdc799e)
可以直接使用yarn-session.sh这个脚本来启动。也可以使用“--help”查看更多参数设置。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_04.jpg?sign=1739295019-qkpgD5f7sPnZIgU554me5uW3LKHbSfiF-0-7cf2875e7616f630e4e8cf02597d376e)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_01.jpg?sign=1739295019-pA2TDCb7SrDo5RaMqt5BjGBv1ZMtx8vY-0-b311d562d8f9a5c4eccaef4795a61a5a)
注意:
如果启动时YARN的内存太小,则可能报出以下错误。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_02.jpg?sign=1739295019-P6QQAsWIlrN3N3hxVyIqaZYgXL5I5CBL-0-eafb058bc65606709b90c40ea0f812e6)
此时需要修改yarn-site.xml添加以下配置,然后重启YARN。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_03.jpg?sign=1739295019-Q79vDkaBlOyRrE5VPF3mySSBSn82gbZZ-0-58df10a31f6b38f44fa469558ee5709e)
这个参数的功能主要是让YARN集群跳过集群资源检查,避免由于虚拟机内存不够而导致任务提交失败。
5.查看YARN管理界面
访问YARN的8088管理界面http://node01:8088/cluster,发现其中有一个应用,这是为Flink单独启动的一个Session。
6.提交任务
使用Flink自带的jar包实现单词统计功能。
在node01上准备单词文件。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_01.jpg?sign=1739295019-1kJHAquBATd4NwPeqigurVXnaRZfMJpj-0-68ffda3605a54b6bf5cc9e7b9693ef80)
文件内容如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_02.jpg?sign=1739295019-6DovCnOTveqgjjL2PtwbBxpzWlwvauCI-0-626edb1efcc1366674c81a9abb3a050a)
在HDFS上创建文件夹并上传文件。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_03.jpg?sign=1739295019-iJHraYGUkIsD2rKErM0rufGzoydWmkaf-0-aa2e30e5e505a6a11cde0c3c4ca63625)
在node01上执行以下命令,提交任务到Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_04.jpg?sign=1739295019-vgeTwcI9tJ9iBJyTFpiZV4VP0NWh2K57-0-576fd43c8f4e008a50633cfd2d6074d6)
7.验证YARN Session的高可用性
通过node01的8088界面,查看YARN Session在哪一台机器上启动,然后关闭YARN Session进程,这时YARN Session会在另外一台机器上重新启动。
找到YarnSessionClusterEntrypoint所在的服务器,然后关闭该进程。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_05.jpg?sign=1739295019-yAyPKTQYWdNFTYbiEbzi8qzc5w3sgpx4-0-0bccbfc8ed2db31208cd7a023328d764)
关闭进程之后,会发现YARN集群重新启动了一个YarnSessionClusterEntrypoint进程在其他机器上。如图2-2所示,YARN上又启动了一个新的任务。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_01.jpg?sign=1739295019-LS7omDji7UTgx5zZcy04ncXJAfxCiuhy-0-25e038d9a6d8093b14fec649a9f09f99)
●图2-2 Flink on YARN的高可用性
2.5.2 多个YARN Session模式
这种模式的优点是一个任务对应一个Job,即每提交一个Job都会根据自身情况向YARN申请资源,直到Job执行完成,并不会影响下一个Job的正常运行,除非YARN上没有任何资源。
注意:
Client端必须设置YARN_CONF_DIR、HADOOP_CONF_DIR或者HADOOP_HOME环境变量,通过这个环境变量来读取YARN和HDFS的配置信息,否则启动会失败。
这种模式下不需要在YARN中启动任何集群,直接提交任务即可。
1.直接执行命令提交任务
编写提交任务的脚本并执行。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_02.jpg?sign=1739295019-gZvieVIssdh1nxmjYBpMiwvydjkZUeqV-0-68471fd0af0d624c2b28d8f967f98a9b)
2.查看输出结果
在HDFS中执行以下命令查看输出结果。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_03.jpg?sign=1739295019-q9xxU6yOPe2t7eOyYUqnXbeNOc0WXjDR-0-19ad8920ba31b03afe39c1de9a4a1000)
3.查看“flink run”的帮助文档
使用“--help”查看帮助文档中的参数。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_04.jpg?sign=1739295019-syM0Z2HpmMElPY5wVd2RWzgL1xnPq2uq-0-bd8c804eb4e2d4c7e87694f5de9d0fbc)
结果如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/34_01.jpg?sign=1739295019-y65ski5Y4lPT4j2ZIotO3MO8rdUPN501-0-0f3eb476ef2ef9f3806ee536b499dbc3)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/35_01.jpg?sign=1739295019-pkQJJz5OmH5a7QEDOV1G3tzuxZW2iVVJ-0-3beb729c78db748d88c995a80652a1e0)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_01.jpg?sign=1739295019-Q1cUYd7Eu2ZtPgNYlRCkAS4SLxuu4ZCl-0-34cfa3e13f6d9eef9c8a227284f67216)
2.5.3“flink run”脚本分析
提交Flink任务时,可以加入以下这些参数。
1)默认查找当前YARN集群中已有YARN Session信息中的JobManager(所在路径:/tmp/.yarn-properties-root)。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_02.jpg?sign=1739295019-upxF4iMCu1fe5JpKquiW8WHwMYc7gIzZ-0-e9d5172c486e9901c822edb45d5903c9)
2)连接指定主机和端口的JobManager。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_03.jpg?sign=1739295019-McVxIM2UNaxYPDNXzWw9ByE3a2Ejmhfm-0-a87ae7aa6e7f04370f6ed6a758169dfe)
3)启动一个新的YARN-Session。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_04.jpg?sign=1739295019-GxIJhTs6r1ytLJhSZI9ZRJXtUOeX2OnB-0-455454486d8fe9a19431bd9991530796)
注意:
YARN Session命令行的选项也可以使用“./bin/flink”获得。它们都有一个“y”或者“yarn”的前缀,例如:bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar。