flink 动态支持依赖jar包提交


1、下载对应版本完整flink版本,打开org.apache.flink.yarn 模块的pom文件,pom文件的parent描述中version版本改为对应版本,如:将1.11-SNAPSHOT 改为1.11.2
2、修改YarnClusterDescriptor 类的addLibFoldersToShipFiles 方法,在方法首部添加代码:
String userLibDir = System.getenv().get("USER_LIB_DIR");
if (userLibDir != null) {
File directoryFile = new File(userLibDir);
if (directoryFile.isDirectory()) {
effectiveShipFiles.add(directoryFile);
}
}

使用mvn clean package -Dmaven.test.skip=true 编译org.apache.flink.yarn 模块
用编译后得到的类YarnClusterDescriptor.class替换flink安装包中flink-dist_2.11-1.11.2.jar对应的类

3、修改flink安装目录下bin目录下的config.sh文件,在constructFlinkClassPath函数首部添加如下代码:
for f in $USER_LIB_DIR/*.jar
do
FLINK_CLASSPATH=$FLINK_CLASSPATH:$f
done

4、修改应用启动脚本,在启动脚本前设置用户lib库,如下:
export USER_LIB_DIR=/xxx/lib

5、用户lib库下的log4j相关jar包需要去掉,否则与flink安装包中的依赖包冲突,可能导致打印不全
原文地址:https://www.cnblogs.com/cenglinjinran/p/13711081.html