Flink提交任务到yarn的时候,每次会把jar包存储到application_xxx 目录下,每次提交都会生成一个新的文件夹,这些依赖包几百M,而我每次又不改这些,在Flink为何每次都生成一个新的,能不能共用一个 省的每次都上传文件?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Flink在提交任务到YARN时,会将依赖的jar包存储到以application_xxx
为前缀的目录下。这是因为每个Flink应用程序都有自己的JAR文件和类路径,因此需要将这些依赖项单独打包并存储在每个应用程序目录中。
如果您希望避免每次都上传这些依赖包,可以考虑以下几种方法:
使用共享库:您可以将所有应用程序共享的依赖项打包到一个JAR文件中,并将其上传到HDFS或其他共享存储中。然后,在每个应用程序的启动命令中指定该共享库的位置。这样,所有应用程序都可以共享同一个依赖库,而无需重复上传。
使用Maven或Gradle构建工具:您可以使用Maven或Gradle等构建工具来管理您的项目依赖关系。这些工具可以自动下载和管理所需的依赖项,并在构建过程中将它们打包到应用程序的JAR文件中。这样,您只需在构建阶段上传一次依赖项,而无需在每次提交时都重新上传。
使用Flink的远程缓存功能:Flink还提供了远程缓存功能,允许您将常用的数据集缓存在分布式文件系统(如HDFS)中。这样,多个应用程序可以共享同一份数据,而无需每次都重新加载。
请注意,以上方法可能因您的具体需求和环境而有所不同。您可以根据自己的情况选择适合您的方法来避免重复上传依赖包。
上传到hdfs,然后提交参数指定provide lib参数,这样yarn分发下去后,所有的container都会使用同一份jar包列表啦。 yarn.provided.lib.dirs=hdfs://node100:8020/user/dlink/flink-yarn/1.14.3/jars;hdfs://node100:8020/user/dlink/flink-yarn/1.14.3/plugins 此回答整理自钉群“【②群】Apache Flink China社区”
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。