当前位置:网站首页>【Flink 问题】Flink 如何提交轻量jar包 依赖该如何存放 会遇到哪些问题
【Flink 问题】Flink 如何提交轻量jar包 依赖该如何存放 会遇到哪些问题
2022-08-02 08:29:00 【T_Antry】
又好长一阵子没写作了,不过接下来会开始定期更新了。
从自己身上找到了一些问题–懒惰
- 懒惰的根源不是懒惰本身
- 而是意识到懒惰,却极难改变这种现状
- 我想还是要以短期目标为导向
- 这或许是改变现状的一种方式
说正事了,不然有人点进来要说,这沙雕是在干啥?虽然我很随缘,但我还是很在乎读者体验。
问题描述
Flink任务的提交,是通过提交jar包,配置方法入口,并行度以及其他必要参数。如果在调试阶段,难免在修改完代码之后需要重新上传jar包。多次重复上传,如果这个包太大了,例如我这个项目的包
尼玛,两百兆。网速快点还好,如果远程部署,每次要传输很久。再者,如果nginx限制了传输大小,直接GG,况且每次传好几百兆,太吃资源了。总之弊端太多了。
解决方法
我们写的代码显然不可能有几百兆,这其中大部分都是项目中引用的依赖,和项目中用到的大文件。因此,可以我们要让依赖导入一次即可。会点进来的哥们,我想都是对flink有一定的熟悉,到了尝试部署的阶段了,本文这边采用的是standalone模式,这部分的内容,道理都一样,不同模式依赖存放位置不同罢了。
standalone模式下,jar的依赖可以放在安装目录的lib目录下
如下图:
可以看到这目录很纯净,都是原始,flink启动用到的相关依赖。既然flink启动用到的是这里的依赖,项目的外部依赖也放这里。机灵的伙伴们一定会想到依赖冲突的问题。这种情况只能依项目情况解决了。主要是scala的包和sl4j的包会冲突。
打包maven配置修改plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 将项目依赖包复制到<outputDirectory>指定的目录下 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${
project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 将项目依赖包的路径(与上一项中的<outputDirectory>对应)添加到classPath中 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.ctbri.echoRisk.ApplicationStart</mainClass>
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
使用这个插件打出来的包

可以看到现在的jar包只有600多k,并且可以看到多了一个lib的文件夹。
可以看到这里面有项目用到的很多依赖。
正常来讲,把这些依赖,全部复制到flink/lib目录下,启动集群,提交这个几百k的jar就可以运行了。
但是会发现,copy到flink/lib下之后,flink直接启动失败了,这就是包冲突的问题。我这边因为冲突的是scala包和sl4j的包,我不用scala,因此scala的包我直接不放进lib,sl4j同理,也不放进lib。然后能够正常启动我就不管了。
解决这种问题,当然还有其他方式,我估计就是项目需要选择和你安装的flink版本要一致。
晚安~
边栏推荐
- UVM之sequence机制
- R语言plotly可视化:plotly可视化回归模型实际值和回归预测值的散点图分析回归模型的预测效能、一个好的模型大部分的散点在对角线附近(predicted vs actual)
- 软件测试技术之解析图灵测试离我们还有多远
- TiFlash 存储层概览
- 力扣:第 304 场周赛
- 下一个排列
- Biotin-C6-amine|N-biotinyl-1,6-hexanediamine|CAS: 65953-56-2
- 【论文阅读】Distilling the Knowledge in a Neural Network
- 为什么都推荐使用wordpress, 而不是 phpcms 这些国内的CMS呢?
- Jenkins--部署--3.1--代码提交自动触发jenkins--方式1
猜你喜欢

Wang Xuegang - compiled shipment line file

大厂外包,值得拥有吗?
![[ansible] playbook explains the execution steps in combination with the project](/img/fe/82b8562075fef33490d5aae7e809f5.png)
[ansible] playbook explains the execution steps in combination with the project

mysql 中 in 的用法

Biotin-C6-amine|N-biotinyl-1,6-hexanediamine|CAS: 65953-56-2

C语言基础_结构体

shell脚本
What is NoSQL?Databases for the cloud-scale future
![shell中计算命令详解(expr、(())、 $[]、let、bc )](/img/3c/5cc4d16b9b525997761445f32802d5.png)
shell中计算命令详解(expr、(())、 $[]、let、bc )

Biotin - LC - Hydrazide | CAS: 109276-34-8 | Biotin - LC - Hydrazide
随机推荐
cas: 139504-50-0 Maytansine DM1|Mertansine|
自定义View实现波浪荡漾效果
Jenkins--基础--6.3--Pipeline--语法--脚本式
location对象,navigator对象,history对象学习
prometheus monitoring mysql_galera cluster
QT web development - Notes - 3
商业智能平台BI 商业智能分析平台 如何选择合适的商业智能平台BI
【论文阅读】Distilling the Knowledge in a Neural Network
HCIP笔记第十三天
Redisson实现分布式锁
Pycharm (1) the basic use of tutorial
A little bit of knowledge - why do not usually cook with copper pots
postman使用方法
pycharm的基本使用教程(1)
day_05_pickel 和 json
Analysis of software testing technology How far is Turing test from us
JSP页面中page指令contentPage/pageEncoding具有什么功能呢?
“蔚来杯“2022牛客暑期多校训练营4
Redisson的看门狗机制
【特别提醒】订阅此专栏的用户请先阅读本文再决定是否需要购买此专栏