Flink动态添加依赖Jar包提交到Yarn

背景

开发的flink程序,要使用yarn-cluster的方式进行部署。

程序中依赖了很多第三方jar包,不想用shade那种打包方式打成一个大jar包,然后提交。

想将应用程序jar包和依赖jar包分开,依赖的jar包在提交时一起提交上去(像spark on yarn直接指定“–jars”这样),但是找了好久发现flink官方没有提供这样的方式。

直接将依赖的jar包放在flink的lib目录下,可以实现,但是感觉这样会污染flink的lib包。

于是找到了如下方法,可以实现类似的功能。在此记录分享一下。

大概实现就是修改flink提交的脚本,开放了用户添加自己的jar依赖能力,然后在提交时指定依赖的jar包目录。

过程

  1. 下载flink源码包

    下载自己flink对应的版本的源码包。以下是源码包地址:

    https://mirrors.tuna.tsinghua.edu.cn/apache/flink/

    https://archive.apache.org/dist/flink/

  2. 修改flink-yarn模块下的YarnClusterDescriptor 类的addLibFoldersToShipFiles 方法,在方法首部添加如下代码:

    USER_LIB_DIR就是我们之后要用到的环境参数

    String userLibDir = System.getenv().get("USER_LIB_DIR");
    if (userLibDir != null) {
       File directoryFile = new File(userLibDir);
       
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值