首页 > 编程语言 >Flink程序打包

Flink程序打包

时间:2022-12-08 19:34:47浏览次数:73  
标签:plugin 程序 Flink jar maven dependencies copy 打包

在基于 Flink DataStreamAPI 进行流式数据处理应用时,我们可能希望将依赖和应用程序分别打包,如此便于发布和问题定位。在较新版本的 Flink版本中推出了application模式,这种模式可以通过yarn.provided.lib.dirs参数将依赖项提前上传到HDFS,如此,客户端每次启动应用时不再需要进行jar文件上传,加快启动速度。由于 HDFS 的高可用,如果客户端服务器宕机,也不用担心jar文件丢失。

如何打包呢?

如下是我项目的build配置

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 将工程依赖的jar包,复制至target/lib目录下进行管理,方便已生成jar的工程进行引用。 -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                            <!-- 不需要拷贝provided scope -->
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <classesDirectory>target/classes/</classesDirectory>
                    <archive>
                        <manifest>
                            <!-- 主函数的入口 -->
                            <mainClass>com.aaron.bigdata.stream.flink.Main</mainClass>
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

上述描述中包括两个plugin

  • copy-dependencies:拷贝依赖到特定路径
  • maven-jar-plugin:构造可执行jar包

需要特别说明的是<includeScope>runtime</includeScope>配置,指明不需要provided scope依赖有两个原因:

  • 减少lib大小,便于发布
  • 减少冲突,因为 flink 的核心包不需要用户提供,如果提供了,很可能会提示文件已经存在,尽管是相同版本,依然会提示在两个位置找到了实现,必须删除一个。我在使用flink-json-${VERSION}.jar时,出现了这个问题。

参考资料:
https://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html

标签:plugin,程序,Flink,jar,maven,dependencies,copy,打包
From: https://www.cnblogs.com/aaronking/p/16967063.html

相关文章

  • Flink1.15仅支持ZooKeeper3.5/3.6
    这是一个验证贴,因为社区文档是错误的。先说结论Flink1.15仅支持ZooKeeper3.5/3.6,不再支持3.4。FLINK-25146 DropsupportforZookeeper3.4 https://nightlies.apach......
  • 解一个webpack打包后加密的JS代码
    源码过长,只贴部分加密的源代码如下0x1fc9:function(_0x2715a2,_0x5a118b,_0x344094){const_0x23ae3e=_0x344094(`611c`);class_0x2e9b72{......
  • python123_第七周练习_程序设计题
    羽毛球计分规则:1.21分制,3局2胜为佳2.每球得分制3.每回合中,取胜的一方加1分4.当双方均为20分时,领先对方2分的一方赢得该局比赛5.当双方均为29分时,先取得30......
  • Vue项目打包后css中的-webkit-line-clamp这个属性失效
    .htcon{margin-top:5px;font-size:13px;word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-b......
  • 初入职场程序员指南
    很多初入职场的程序员朋友,可能很长一段时间都在重复下面的过程:组长分配一个任务 --> 你埋头写代码 --> 收到 Bug 反馈 --> 你埋头改代码 ...有位刚入职的学弟就......
  • 关于手机app或者小程序自动化如何移动滑块
    1.前言最近由于某多频繁升级为了有数据无奈弄了自动化.自动化难点在于滑块处理2.自动化工具选择airtest1.正常协议过滑块首先计算出缺口图片到滑块图片的距离然后与本......
  • 用于软驱的Linux驱动程序直到2023年仍在维护中
        当我们准备进入 2023 年时,Linux 内核的软盘驱动仍在维护。在下周的 Linux 6.2 合并窗口之前,开发人员在为 2 月左右公布的 Linux 6.2 稳定版而努力,这......
  • 某论坛被加入下载灰鸽子Backdoor.Gpigeon.2006.bbe等恶意程序的代码
    endurer原创2007-01-31第1版论坛首页包含代码:/----<scriptsrc="hxxp://www.4**884**6*6.com.**/AdOpen***.asp?Adid=41&MyUserID=dy16"></script>----/AdOpen***.asp中包含......
  • iOS APP打包上传到APPstore的最新步骤​
     一、前言:​作为一名iOS开发者,把辛辛苦苦开发出来的App上传到AppStore是件必要的事。但是很多人还是不知道该怎么上传到AppStore上​下面就来详细讲解一下具体流程步......
  • iOS APP打包上传到APPstore的最新步骤​
    一、前言:​作为一名iOS开发者,把辛辛苦苦开发出来的App上传到AppStore是件必要的事。但是很多人还是不知道该怎么上传到AppStore上​下面就来详细讲解一下具体流程步骤。​......