![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=1739511981-QQ14JqgX1S5fpoOZNh5RwKv5fhXB4c1d-0-03ac7b99a714ccc8227fceaf656df076)
●图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=1739511981-7HskEXykkD5vvn7Lb8dqXhIhWe2IR9Jz-0-883fe4cc7b1e6849f97075edf48ed394)
添加以下配置属性到yarn-site.xml文件中。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_03.jpg?sign=1739511981-LTSoHugdxyPWB7SCF9fXcb8i5bt4xOX2-0-8d3b8fd17415e4868d071a60e4c995f4)
然后在node01上将修改后的配置文件复制到node02与node03服务器,命令如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_04.jpg?sign=1739511981-nBB3yi6Z1lX99BagHy5pPbYWLfWsxCMI-0-1069d66b41e74c4a066ccd8d7d9d4629)
之后重新启动YARN集群。
2.修改Flink配置文件
在node01上执行以下命令修改Flink配置文件。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_01.jpg?sign=1739511981-t2ACgdSS6r6iH3TaEx39PmJL992Dymec-0-1b8ee55e6dd5658386157f9cc1fcce84)
3.在HDFS上创建文件夹
命令如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_02.jpg?sign=1739511981-VULvAgk8IoHCuAYcnffYbXHt4iePJ0zv-0-f7ee7117e6aaa2917754297f762f0766)
4.在YARN中启动Flink集群
直接在node01上执行以下命令,在YARN中启动一个全新的Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_03.jpg?sign=1739511981-DvO35Cs73bCLEi1AXd2xJCMUxKOZV07S-0-b6cff0290ae734223f8b10dc48411c4f)
可以直接使用yarn-session.sh这个脚本来启动。也可以使用“--help”查看更多参数设置。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_04.jpg?sign=1739511981-shsd8PfdtnK0wP8jFe63FnWNwH5kARvX-0-99b47ada1805ea59b1a24674c97848fd)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_01.jpg?sign=1739511981-tztZ6VBWd9m3XpLvDs3PQJXBnealWtsd-0-1972610d9d3eef9148a00f04aa7275ff)
注意:
如果启动时YARN的内存太小,则可能报出以下错误。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_02.jpg?sign=1739511981-qjySKAYMFT0FMRcYMM8terCDy5VokAC9-0-35412f53ede096ac9ef5023cc3ced53a)
此时需要修改yarn-site.xml添加以下配置,然后重启YARN。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_03.jpg?sign=1739511981-X46ow5ejKmrBQbr4tXFww6v3Pun3W3Pb-0-3029086c3a46a4caf4532dc048b07e70)
这个参数的功能主要是让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=1739511981-I5qE569k4U57dyiwtZ2HNiFSvgnpkYFh-0-c4ca7c04ae5592a7cda7499c36c9cf03)
文件内容如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_02.jpg?sign=1739511981-0wDh5lMgQJyKPzyWLgTOZlX2bjbGRzdf-0-3d436aa5f56f18c0f10ebfb6fc8d0a2a)
在HDFS上创建文件夹并上传文件。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_03.jpg?sign=1739511981-4X7dirEKUqmOVNuEMvevL3yP3gsVZGMI-0-e9c1955c14fc44ccbb2bc46fcd722e53)
在node01上执行以下命令,提交任务到Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_04.jpg?sign=1739511981-GuocqeN4onHXdCEHqcxouVrRo8XzrVPi-0-749df9d48d87bb9700bdb96847528680)
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=1739511981-1DQd1DAoACyXx4IiuTsKWvgKwZHnuNVT-0-20e01e2c1ba7c93b7dd63a2bc66f08b3)
关闭进程之后,会发现YARN集群重新启动了一个YarnSessionClusterEntrypoint进程在其他机器上。如图2-2所示,YARN上又启动了一个新的任务。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_01.jpg?sign=1739511981-F5yORhhTtD8iogfMZXqn7sw52vtadmD9-0-650b9b62be9e775cd74d8cd9a99995f0)
●图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=1739511981-7qUcd2EMU9gtCXGEZJVEgoiiiLxCmb2f-0-792f652f9a268e6b7120a064fc36d1e7)
2.查看输出结果
在HDFS中执行以下命令查看输出结果。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_03.jpg?sign=1739511981-6TEwRQTqsFTIW78ej7ikNAyNB12WMjNq-0-aec6b30f48ccc16c942b0943129329f0)
3.查看“flink run”的帮助文档
使用“--help”查看帮助文档中的参数。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_04.jpg?sign=1739511981-NGnb0rcc0APAAnFpyihUR83C6EtdJyRs-0-6ffe27300ccc439adc1363b1612957a9)
结果如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/34_01.jpg?sign=1739511981-S6EAmMJVLQ3tBP7OlNBwta3sEfX9Mbec-0-19a5010594917c472a225321119babdd)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/35_01.jpg?sign=1739511981-pt1UfMyrujM7UmSYAlAf9JOyyqti6I8H-0-679ee1f1e7c78c9cb2ba43ffb3cf14f3)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_01.jpg?sign=1739511981-bGPhfhPM2YcDYjuYZJOTMIn9qXJmbgjo-0-ede848c497ee3e69fd1885ae192c7569)
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=1739511981-37hnsBHGyGfFEWgbCtflieacIYXOMpHb-0-b75ce314bc0174714b20c2a46d2d8e09)
2)连接指定主机和端口的JobManager。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_03.jpg?sign=1739511981-g76luzySaiK86fDTKMas4yh5Y0la8CJn-0-089e0f73a573c2c8587c9618cfaa566b)
3)启动一个新的YARN-Session。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_04.jpg?sign=1739511981-OSCyIa3AaO9Z31YhucoDR5t7EzsXazvX-0-34d85df3031acf096a85944c80c2e50f)
注意:
YARN Session命令行的选项也可以使用“./bin/flink”获得。它们都有一个“y”或者“yarn”的前缀,例如:bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar。