如何将 flink fat jar 更改为thin jar

问题描述

我可以将依赖 jar 移动到 hdfs,这样我就可以运行一个没有依赖 jar 的瘦 jar 吗? 运维工程师不允许我移动jar到flink lib文件夹。

解决方法

不确定您要解决什么问题,但如果您使用 yarn,您可能需要考虑应用程序模式部署:

./bin/flink run-application -t yarn-application \
  -Dyarn.provided.lib.dirs="hdfs://myhdfs/remote-flink-dist-dir" \
    "hdfs://myhdfs/jars/MyApplication.jar"

在这个例子中,MyApplication.jar 不是一个瘦 jar,但是作业提交是非常轻量级的,因为所需的 Flink jar 和应用程序 jar 是从 HDFS 中提取的,而不是由客户端运送到集群.此外,应用程序的 main() 方法是在 JobManager 上执行的。

应用模式是在 Flink 1.11 中引入的,在这篇博文中有详细描述:Application Deployment in Flink: Current State and the new Application Mode