编译 Flink代码

构建环境

JDK1.8以上和Maven 3.3.x可以构建Flink,但是不能正确地遮盖某些依赖项。Maven 3.2.5会正确创建库。所以这里使用为了减少问题选择 Maven3.2.5版本进行构建。要构建单元测试,请使用Java 8以上,以防止使用PowerMock运行器的单元测试失败。

克隆 Git 仓库

我们可以从github上下载Flink代码了。githubflink的代码仓库链接。国内镜像地址链接。

git clone https://gitee.com/mirrors/apache-flink.git

注意下载的时候可能会出现如下问题:

fatal: bad config value for 'http.postbuffer' in /root/.gitconfig

解决方案是修改git默认的缓存大小(500M)

git config --global http.postBuffer 524288000

Maven 配置

mirrors标签中添加如下mirror依赖简要说明一下,第一个mirror使用的是aliyun提供的maven镜像仓库,能够为国内用户加速maven repository的访问,你也可以配置成国内其他的maven镜像仓库或者自己搭建的仓库。最重要的是第二个片段的内容。由于flink中的flink-filesystems/flink-mapr-fs模块依赖mapr-releases repository提供的jar包,然而由于国内访问mapr-releases repository比较慢,而 且所依赖的 maprfs-5.2.1-mapr.jar这个jar包有48MBflink依赖中最大的一个jar包,故初次编译flink时,往往会由于下载mapr相关依赖超时导致编译失败。因此,aliyun专门有一个镜像仓库代理mapr-releases repository,以期望能让用户更容易地下载mapr相关的jar包。

 <mirror><id>nexus-aliyun</id><mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror><id>mapr-public</id><mirrorOf>mapr-releases</mirrorOf><name>mapr-releases</name><url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>
<mirror><id>confluent</id><mirrorOf>confluent</mirrorOf><name>confluent</name><url>http://packages.confluent.io/maven</url>
</mirror>
<mirror><id>mapr-public</id><mirrorOf>mapr-releases</mirrorOf><name>mapr-releases</name><url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>

可以通过这个链接查看aliyun提供的镜像仓库的meta信息:https://maven.aliyun.com/mvn/view

获取 Git分支

查看 Git远程分支,我们选择当前次新的1.8​ 在这里插入图片描述

git branch -r

源码切换到1.8分支

git checkout release-1.8

Maven 编译

常用命令,建议使用此命令,不编译tests的,否则你会遇到bink编译问题。

mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true

删除已有的build,编译flink binary #接着把flink binary安装在mavenlocal repository(默认是~/.m2/repository)中,如有问题百度解决,百度没有,多试几次,可能是网络的问题。

mvn clean install -DskipTests

另一种编译命令,相对于上面这个命令,主要的确保是:不编译tests、QA pluginsJavaDocs,因此编译要更快一些

mvn clean install -DskipTests -Dfast

另外,在一些情况下,我们可能并不想把编译后的flink binary安装在mavenlocal repository下,我们可以使用下面的命令:

# 删除已有的 build,编译 flink binary
mvn clean package -DskipTests
# 另一种编译命令,相对于上面这个命令,主要的确保是:
# 不编译 tests、QA plugins 和 JavaDocs,因此编译要更快一些
mvn clean package -DskipTests -Dfast

如果你需要使用指定hadoop的版本,可以通过指定-Dhadoop.version来设置,编译命令如下:

mvn clean install -DskipTests -Dhadoop.version=2.6.1
# 或者
mvn clean package -DskipTests -Dhadoop.version=2.6.1

问题及解决

问题如下,Could not resolve dependencies for project flink-runtime_2.11:jar:1.8-SNAPSHOT,类似这种依赖问题。

[ERROR] Failed to execute goal on project flink-s3-fs-hadoop: Could not resolve dependencies for project org.apache.flink:flink-s3-fs-hadoop:jar:1.8-SNAPSHOT: Could not find artifact org.apache.flink:flink-fs-hadoop-shaded:jar:tests:1.8-SNAPSHOT in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) -> [Help 1]

解决方案,在下载对应的Jar包链接,并执行如下命令进行安装

[root@hadoop1 apache-flink]# mvn install:install-file -DgroupId=org.apache.flink -DartifactId=flink-s3-fs-hadoop -Dversion=1.8-SNAPSHOT -Dpackaging=jar -Dfile=/usr/local/myjar/flink-s3-fs-hadoop-1.8.0.jar

当成功编译完成后,上述几种编译方式最终都能在当前flinkcode path下编译出完整的flink binary,可以在flink-dist/target/目录中看到:
【1】flink binary目录,本例中是flink-dist/target/flink-1.5.1-bin/flink-1.5.1
【2】flink binary目录的压缩包,本例中是flink-dist/target/flink-1.5.1.tar.gz
【3】包含flink核心功能的jar包,本例中是flink-dist/target/flink-dist_2.11-1.5.1.jar
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266269.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java 基础】30 JDK动态代理

文章目录 1.定义2.原理3.使用1&#xff09;定义业务接口2&#xff09;实现 InvocationHandler 接口3&#xff09;生成代理类 4.优点5.缺点总结 动态代理是一种重要的 设计模式&#xff0c;它允许在运行时生成代理类来代替实际的类。动态代理主要通过反射机制实现&#xff0c;为…

Docker入门安装gerrit软件

Windows上运行docker 什么是Docker Desktop docker desktop是Docker在Windows 10和macOS操作系统上的官方安装方式&#xff0c;这个方法依然属于先在 Windows 上部署 Docker 的方法都是先安装一个虚拟机&#xff0c;并在安装 Linux 系统的的虚拟机中运行 Docker。 开启Hyper-…

BluetoothDevice 序列化问题

文章目录 前言思考分析定位 前言 在做蓝牙设备通信时&#xff0c;遇到一个奇葩的问题&#xff0c;公司另一个部门开发的蓝牙组件库&#xff0c;把蓝牙设备BluetoothDevice进行了序列化&#xff0c;在连接时候又进行反序列化。但是当我去调试我的项目时&#xff0c;发现发序列化…

【每日一题】最小体力消耗路径

文章目录 Tag题目来源解题思路方法一&#xff1a;二分枚举答案 写在最后 Tag 【二分枚举答案】【图】【2023-12-11】 题目来源 1631. 最小体力消耗路径 解题思路 拿到这个题目&#xff0c;计算从左上角到右下角的最小体力消耗值&#xff0c;有点像 64. 最小路径和。在 64 题…

以太坊:前世今生与未来

一、引言 以太坊&#xff0c;这个在区块链领域大放异彩的名字&#xff0c;似乎已经成为了去中心化应用&#xff08;DApps&#xff09;的代名词。从初期的萌芽到如今的繁荣发展&#xff0c;以太坊经历了一段曲折而精彩的旅程。让我们一起回顾一下以太坊的前世今生&#xff0c;以…

C# 任务的异常和延续处理

写在前面 当Task在执行过程中出现异常或被取消等例外的情况时&#xff0c;为了让执行流程能够继续进行&#xff0c;可以使用延续方法实现这种链式处理&#xff1b;还可以针对前置任务不同的执行结果&#xff0c;选择执行不同的延续分支方法。子任务执行过程中的任何异常都会被…

分页设计(平时在表下面的栏框,有首页 | 上一页 | 下一页 | 尾页),下面代码带你实现

分页设计的本质就是&#xff0c;分页查询&#xff0c;就是SQL语句当中的(select * from ? limit ? , &#xff1f;&#xff09;,这里第一个&#xff1f;是所分页的那张表 &#xff0c;第二个&#xff1f;从哪条开始&#xff0c;第三个&#xff1f;是在页面上想让这张表出现几…

老师们居然这样把考试成绩发给家长

教育是一个复杂而多元的过程&#xff0c;其中考试成绩的发布和沟通是教育过程中的一个重要环节。然而&#xff0c;有些老师在发布考试成绩时&#xff0c;采取了一些不恰当的方式&#xff0c;给家长和学生带来了不必要的困扰和压力。本文将探讨老师们不应该采取的发布考试成绩的…

MSPM0L1306例程学习-ADC部分(1)

MSPM0L1306例程学习-ADC部分(1) MSPM0L1306例程学习 使用的TI的官方例程&#xff0c;即SDK里边包含的例程代码。 MCU使用的是MSPM0L1306, 对于ADC部分&#xff0c;有10个例程&#xff1a; 例程理解 ADC的转换有多种工作模式&#xff0c;从最简单的单通道单次转换开始入手…

远程控制如何赋能智能制造?贝锐向日葵制造业场景案例解析

随着数字化转型在制造业的不断深入&#xff0c;企业在产线端也逐渐投入更多智能化设备&#xff0c;数字化、智能化设备其中一个比较显著的优势就是可以依托互联网实现远程运维和调试&#xff0c;大大提升产线设备的稳定性和工作效率&#xff1b;而远程调试运维一个重要的实现方…

Spring Cache【娓娓道来】

目录​​​​​​​ 1.自我介好&#x1f633;&#x1f633;&#x1f633; 2.常用注解 &#x1f495;&#x1f495;&#x1f495; 3.EnableCaching&#x1f926;‍♂️&#x1f926;‍♂️&#x1f926;‍♂️ 4.CachePut&#x1f937;‍♀️&#x1f937;‍♀️&#x1f93…

.9.png编译报错

android项目中使用9-patch图编译报错&#xff1a;AAPT: error: file failed to compile. 原因是因为.9.png图中有线之间断开或者黑点的存在&#xff0c;把线连上或者把黑点去掉就可以了。如下&#xff1a;