栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Flink 问题】Flink 如何提交轻量jar包 依赖该如何存放 会遇到哪些问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Flink 问题】Flink 如何提交轻量jar包 依赖该如何存放 会遇到哪些问题

又好长一阵子没写作了,不过接下来会开始定期更新了。

从自己身上找到了一些问题–懒惰

  • 懒惰的根源不是懒惰本身
  • 而是意识到懒惰,却极难改变这种现状
  • 我想还是要以短期目标为导向
  • 这或许是改变现状的一种方式

说正事了,不然有人点进来要说,这沙雕是在干啥?虽然我很随缘,但我还是很在乎读者体验。

问题描述

Flink任务的提交,是通过提交jar包,配置方法入口,并行度以及其他必要参数。如果在调试阶段,难免在修改完代码之后需要重新上传jar包。多次重复上传,如果这个包太大了,例如我这个项目的包

尼玛,两百兆。网速快点还好,如果远程部署,每次要传输很久。再者,如果nginx限制了传输大小,直接GG,况且每次传好几百兆,太吃资源了。总之弊端太多了。

解决方法

我们写的代码显然不可能有几百兆,这其中大部分都是项目中引用的依赖,和项目中用到的大文件。因此,可以我们要让依赖导入一次即可。
会点进来的哥们,我想都是对flink有一定的熟悉,到了尝试部署的阶段了,本文这边采用的是standalone模式,这部分的内容,道理都一样,不同模式依赖存放位置不同罢了。
standalone模式下,jar的依赖可以放在安装目录的lib目录下
如下图:

可以看到这目录很纯净,都是原始,flink启动用到的相关依赖。既然flink启动用到的是这里的依赖,项目的外部依赖也放这里。机灵的伙伴们一定会想到依赖冲突的问题。这种情况只能依项目情况解决了。主要是scala的包和sl4j的包会冲突。

打包maven配置修改plugin

                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                    UTF-8
                
            

            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy-dependencies
                        package
                        
                            copy-dependencies
                        
                        
                            
                                ${project.build.directory}/lib
                            
                        
                    
                
            
            
            
                org.apache.maven.plugins
                maven-jar-plugin
                
                    
                        
                            true
                            lib/
                            com.ctbri.echoRisk.ApplicationStart
                        
                        
                            ./
                        
                    
                
            

使用这个插件打出来的包


可以看到现在的jar包只有600多k,并且可以看到多了一个lib的文件夹。

可以看到这里面有项目用到的很多依赖。
正常来讲,把这些依赖,全部复制到flink/lib目录下,启动集群,提交这个几百k的jar就可以运行了。
但是会发现,copy到flink/lib下之后,flink直接启动失败了,这就是包冲突的问题。我这边因为冲突的是scala包和sl4j的包,我不用scala,因此scala的包我直接不放进lib,sl4j同理,也不放进lib。然后能够正常启动我就不管了。
解决这种问题,当然还有其他方式,我估计就是项目需要选择和你安装的flink版本要一致。
晚安~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023076.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号