![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=1739374170-06L82O5AMj10FGFivqkCuGV1rxUNae4H-0-2bbd14474e55deabc8e5015abcb8d818)
●图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=1739374170-TjYYE0awhyi5fbbM5q5Pz8p7lwsdnBg6-0-3de1a1ab62ea5de3ccab4ac28caf72cd)
添加以下配置属性到yarn-site.xml文件中。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_03.jpg?sign=1739374170-SN9EwKdlZ7Cq1cpjxRfh2suFsGWoZx4Z-0-ae63b25838efa5a5c77f78be36207238)
然后在node01上将修改后的配置文件复制到node02与node03服务器,命令如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/29_04.jpg?sign=1739374170-2jbNd6aWTFZMj2Q6MBntISkN5SMnBMq8-0-04c97d8ca2a1420cb689cfbc0f2c0bd8)
之后重新启动YARN集群。
2.修改Flink配置文件
在node01上执行以下命令修改Flink配置文件。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_01.jpg?sign=1739374170-szbfhLlliNC8Fe048W96s24ZVZi9SqFZ-0-9e5df6465d7afc4a396585b70e59c5f4)
3.在HDFS上创建文件夹
命令如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_02.jpg?sign=1739374170-wMVNqIEeeHpfvaIgwHLTzdBCSzkisGah-0-72d95b7d564de0944afb658c0ca078e5)
4.在YARN中启动Flink集群
直接在node01上执行以下命令,在YARN中启动一个全新的Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_03.jpg?sign=1739374170-JsiUYLDibZXk1jZ9cFCwLQ5dqSbpVhun-0-20f0aa4141cf11350013259e4e1a3538)
可以直接使用yarn-session.sh这个脚本来启动。也可以使用“--help”查看更多参数设置。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/30_04.jpg?sign=1739374170-yUFJUK5NIBPRwJfOAINSG0DjlwykVhRg-0-d34d23e1f87b68fcebfcb779fa4b285f)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_01.jpg?sign=1739374170-3XY7mO9R08m7G6QsdzNAQltEWq4ulz56-0-a0d983136d204540d8d343ce22101506)
注意:
如果启动时YARN的内存太小,则可能报出以下错误。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_02.jpg?sign=1739374170-A9frfbpqG4Bbl3UxRnad0CIh86KAxCyW-0-c7d815daf78e0a13e72a3980722aa82f)
此时需要修改yarn-site.xml添加以下配置,然后重启YARN。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/31_03.jpg?sign=1739374170-AkoOkbCAFaAozcpALqdjdHtlNXHiQt6I-0-a2946873a1b5e739478b3fab0a2dec2f)
这个参数的功能主要是让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=1739374170-YbD26r2R395mMIe9wWsJmFWN0CKPqUcC-0-4d894a4b3866245de4cc5f16dceda08f)
文件内容如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_02.jpg?sign=1739374170-9sXKVUdfxMm9I8CglZkNLHm00FW6V2pE-0-13993dc50568883f76dfb7e8c335b76c)
在HDFS上创建文件夹并上传文件。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_03.jpg?sign=1739374170-Tel09qK0OXplUzrpfyi10UDIYyRw4WCO-0-9b7d32a0db8f999f0f838aeaaa0fc567)
在node01上执行以下命令,提交任务到Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/32_04.jpg?sign=1739374170-WUQJmkTOxWEPYjQJUgHqlytlo8hP45r8-0-d4401b47700654d271ffaf26e1a47352)
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=1739374170-hNBF1FYdvDOMngiu3JfxBzLmPmuSVPiX-0-4cafdcf1a9d36ed610105c8eedacb1d0)
关闭进程之后,会发现YARN集群重新启动了一个YarnSessionClusterEntrypoint进程在其他机器上。如图2-2所示,YARN上又启动了一个新的任务。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_01.jpg?sign=1739374170-I8MEAFTtHq2TVeLilofa5nrYNQxiBhMF-0-7b73ee20c1fb734b9879b95803e11b06)
●图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=1739374170-sABLUoQZcbnytsYaQNyEYQKJWYMKOxnP-0-b6db026916b0d26ab024c9b7b861bfa9)
2.查看输出结果
在HDFS中执行以下命令查看输出结果。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_03.jpg?sign=1739374170-LeqEBmesxwICWbsj3ebPAsmX2CJglPsj-0-3cba1d41a33e54253a6362dd4926218b)
3.查看“flink run”的帮助文档
使用“--help”查看帮助文档中的参数。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/33_04.jpg?sign=1739374170-zdy4XwYjRSbQHq5Ib4drMkAgJg3SftD4-0-b611747b41930144f72bee414071c9f1)
结果如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/34_01.jpg?sign=1739374170-2Of8tNVQGFjICAcU0h6Ppfs2zhSJeite-0-e74cb2c3ded703f9779635ecd30e38fb)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/35_01.jpg?sign=1739374170-v1P9tKDw5a6Oz5r5WYjenSXda4Hpa4U5-0-fafaac2e3706ee917fadccf7fa44d951)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_01.jpg?sign=1739374170-wTrBQWxIhkU0lJqW4UekRvuGgbNN3nnm-0-3c5f7e6f6d470d7f3e92bfe65cc5aab4)
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=1739374170-G4nfu8FhXX0V2k3bCxgv3JGsDRNRt95a-0-9d7f045a18513b1512f21286f3e2f7c6)
2)连接指定主机和端口的JobManager。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_03.jpg?sign=1739374170-nWeSibeB9MB4caySDUqQo6kSz9YYc2rs-0-a17e1c43566ed03eb9772bd4e6e318eb)
3)启动一个新的YARN-Session。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/36_04.jpg?sign=1739374170-lbR8YN3DhW9Uyd3f1AXMfhk04QQRRF72-0-8536df6ffcb221f44b40961149fd8bf1)
注意:
YARN Session命令行的选项也可以使用“./bin/flink”获得。它们都有一个“y”或者“yarn”的前缀,例如:bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar。