0


编译 Flink代码

构建环境

JDK1.8

以上和

Maven 3.3.x

可以构建

Flink

,但是不能正确地遮盖某些依赖项。

Maven 3.2.5

会正确创建库。所以这里使用为了减少问题选择

Maven3.2.5

版本进行构建。要构建单元测试,请使用

Java 8

以上,以防止使用

PowerMock

运行器的单元测试失败。

克隆 Git 仓库

我们可以从

github

上下载

Flink

代码了。

github

flink

的代码仓库链接。国内镜像地址链接。

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

包有

48MB

flink

依赖中最大的一个

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

安装在

maven

local repository

(默认是

~/.m2/repository

)中,如有问题百度解决,百度没有,多试几次,可能是网络的问题。

mvn clean install -DskipTests

另一种编译命令,相对于上面这个命令,主要的确保是:不编译

tests、QA plugins

JavaDocs

,因此编译要更快一些

mvn clean install -DskipTests-Dfast

另外,在一些情况下,我们可能并不想把编译后的

flink binary

安装在

maven

local 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]Failedtoexecute 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)->[Help1]

解决方案,在下载对应的

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

当成功编译完成后,上述几种编译方式最终都能在当前

flink

code 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

在这里插入图片描述

标签: flink 大数据 算法

本文转载自: https://blog.csdn.net/zhengzhaoyang122/article/details/134938345
版权归原作者 程序猿进阶 所有, 如有侵权,请联系我们删除。

“编译 Flink代码”的评论:

还没有评论