前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Flink自研新特性:yarn-session集群WebUI支持Jar持久化到HDFS实践总结

Flink自研新特性:yarn-session集群WebUI支持Jar持久化到HDFS实践总结

作者头像
用户9421738
发布2025-02-20 14:23:31
发布2025-02-20 14:23:31
5800
代码可运行
举报
文章被收录于专栏:大数据从业者
运行总次数:0
代码可运行

背景概述

某传统IT客户系统架构重度使用Flink技术栈,早期主要使用standalone集群模式。随着企业数字化改革,公司服务器资源统一纳管。现在迁移为yarn-session集群模式,依然通过Jar方式进行批处理业务开发。实际使用过程中发现yarn-session集群一直运行中,但是之前通过web上传的Jar丢失了。针对上述现象,本文进行了问题复现和源码增强修复。欢迎关注微信公众号:大数据从业者

问题分析

通过web上传Jar,实际存储路径由参数web.upload.dir控制,从参数描述看这里只能使用本地目录。尝试配置成hdfs路径,JobManager报错,果然不支持。

默认情况下,使用临时动态目录,参数web.tmpdir控制。测试效果:

其中,d7ef5fcb-c493-449d-b863-644d9beb9a9a为随机生成的UUID。所以,即使是人为重启yarn-session集群(比如更新Flink配置参数或者lib/jar文件),之前上传的Jar也不会显示,因为上述UUID不同了。

当然,你可以尝试显式设置web.upload.dir为固定目录。但是,无法保证每次任务JobManager能够固定运行在相同的节点。如果尝试将yarn所有节点都创建固定目录且同步上传业务Jar,从实现看是可以,但是很不现实:一方面是操作繁琐,另一方面是容易出现节点不一致问题;同时还要兼容yarn扩容的场景。

类似于上述人为重启的场景,客户现场遇到的是Flink HA模式下JobManager自动故障迁移的场景(比如container误杀或者nodemanager故障),说白了类似于JobManager重启,只不过启动的节点跟原来的节点可能不相同罢了。这种故障迁移场景对于yarn来说属于正常现象,所以application的StartTime一直保持不变,让客户误认为是JobManager未重启。所以,解决方法是将上传Jar存储到HDFS,使用的时候从HDFS下载即可。

源码修改

JarUploadHandler类修改,在handleRequest方法中增加通过FileSystem的copyFromLocalFile将Jar上传到HDFS的操作实现,如下:

JarDeleteHandler类修改,在handleRequest方法中增加通过FileSystem的delete删除HDFS上Jar的操作实现,如下:

RestServerEndpoint类修改,在构造方法中通过FileSystem的copyToLocalFile将HDFS上Jar下载到本地目录的操作实现,如下:

完整的源码修改,见我的github分支:

代码语言:javascript
代码运行次数:0
复制
https://github.com/felixzh2020/flink/commit/69b0cfd7364174231caec9e1b7fa25965d16b118

如果你的Flink版本与我的相同,直接拉取代码、编译打包即可使用。如果Flink版本不同,自行合入即可:

代码语言:javascript
代码运行次数:0
复制
mvn clean install -DskipTests -Dfast -Dhadoop.version=3.2.3 -T 1

使用新的flink-dist/target/flink-1.17.1-bin/flink-1.17.1/lib/flink-dist-1.17.1.jar替换已有的Jar即可!

效果验证

新增配置参数

代码语言:javascript
代码运行次数:0
复制
vim conf/flink-conf.yaml
web.upload.remote-dir: hdfs:///flink/
env.hadoop.conf.dir: /home/myHadoopCluster/hadoop-3.2.3/etc/hadoop/    

启动yarn-session集群、通过web上传Jar、重启集群,Jar仍然存在:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据从业者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景概述
  • 问题分析
  • 源码修改
  • 效果验证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档