0


编译 Flink代码

构建环境

  1. JDK1.8

以上和

  1. Maven 3.3.x

可以构建

  1. Flink

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

  1. Maven 3.2.5

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

  1. Maven3.2.5

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

  1. Java 8

以上,以防止使用

  1. PowerMock

运行器的单元测试失败。

克隆 Git 仓库

我们可以从

  1. github

上下载

  1. Flink

代码了。

  1. github

  1. flink

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

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

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

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

解决方案是修改

  1. git

默认的缓存大小(500M)

  1. git config --global http.postBuffer 524288000

Maven 配置

  1. mirrors

标签中添加如下

  1. mirror

依赖简要说明一下,第一个

  1. mirror

使用的是

  1. aliyun

提供的

  1. maven

镜像仓库,能够为国内用户加速

  1. maven repository

的访问,你也可以配置成国内其他的

  1. maven

镜像仓库或者自己搭建的仓库。最重要的是第二个片段的内容。由于

  1. flink

中的

  1. flink-filesystems/flink-mapr-fs

模块依赖

  1. mapr-releases repository

提供的

  1. jar

包,然而由于国内访问

  1. mapr-releases repository

比较慢,而 且所依赖的

  1. maprfs-5.2.1-mapr.jar

这个

  1. jar

包有

  1. 48MB

  1. flink

依赖中最大的一个

  1. jar

包,故初次编译

  1. flink

时,往往会由于下载

  1. mapr

相关依赖超时导致编译失败。因此,

  1. aliyun

专门有一个镜像仓库代理

  1. mapr-releases repository

,以期望能让用户更容易地下载

  1. mapr

相关的

  1. jar

包。

  1. <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>

可以通过这个链接查看

  1. aliyun

提供的镜像仓库的

  1. meta

信息:

  1. https://maven.aliyun.com/mvn/view

获取 Git分支

查看 Git远程分支,我们选择当前次新的

  1. 1.8

在这里插入图片描述

  1. git branch -r

源码切换到

  1. 1.8

分支

  1. git checkout release-1.8

Maven 编译

常用命令,建议使用此命令,不编译

  1. tests

的,否则你会遇到

  1. bink

编译问题。

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

删除已有的

  1. build

,编译

  1. flink binary #

接着把

  1. flink binary

安装在

  1. maven

  1. local repository

(默认是

  1. ~/.m2/repository

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

  1. mvn clean install -DskipTests

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

  1. testsQA plugins

  1. JavaDocs

,因此编译要更快一些

  1. mvn clean install -DskipTests-Dfast

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

  1. flink binary

安装在

  1. maven

  1. local repository

下,我们可以使用下面的命令:

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

如果你需要使用指定

  1. hadoop

的版本,可以通过指定

  1. -Dhadoop.version

来设置,编译命令如下:

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

问题及解决

问题如下,

  1. Could not resolve dependencies for project flink-runtime_2.11:jar:1.8-SNAPSHOT

,类似这种依赖问题。

  1. [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]

解决方案,在下载对应的

  1. Jar

包链接,并执行如下命令进行安装

  1. [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

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

  1. flink

  1. code path

下编译出完整的

  1. flink binary

,可以在

  1. flink-dist/target/

目录中看到:
【1】

  1. flink binary

目录,本例中是

  1. flink-dist/target/flink-1.5.1-bin/flink-1.5.1

【2】

  1. flink binary

目录的压缩包,本例中是

  1. flink-dist/target/flink-1.5.1.tar.gz

【3】包含

  1. flink

核心功能的

  1. jar

包,本例中是

  1. flink-dist/target/flink-dist_2.11-1.5.1.jar

在这里插入图片描述

标签: flink 大数据 算法

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

“编译 Flink代码”的评论:

还没有评论