编译 Flink代码
创始人
2024-11-28 06:06:39
0

构建环境

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包。

      nexus-aliyun     *,!jeecg,!jeecg-snapshots,!mapr-releases     Nexus aliyun     http://maven.aliyun.com/nexus/content/groups/public       mapr-public     mapr-releases     mapr-releases     https://maven.aliyun.com/repository/mapr-public       confluent     confluent     confluent     http://packages.confluent.io/maven       mapr-public     mapr-releases     mapr-releases     https://maven.aliyun.com/repository/mapr-public  

可以通过这个链接查看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
在这里插入图片描述

相关内容

热门资讯

透视数据(Wpk)微扑克辅助软... 透视数据(Wpk)微扑克辅助软件(透视)详细辅助新2025教程(都是真的有挂)1、微扑克辅助软件ai...
透视挂(德州aa扑克)aapo... 透视挂(德州aa扑克)aapoker有挂(透视)总是是有挂(详细辅助2025新版教程)小薇(透视辅助...
透视app!德州之星外挂,(w... 透视app!德州之星外挂,(wpk德州)都是是真的有挂(详细辅助揭秘攻略);1、每一步都需要思考,不...
透视私人局(wpK)微扑克全自... 透视私人局(wpK)微扑克全自动机器人(透视)详细辅助2025新版总结(原来真的有挂)1、下载好微扑...
透视脚本(AAPOkER)aa... 透视脚本(AAPOkER)aapoker辅助工具存在(透视)果然是有挂(详细辅助透明挂教程);1)a...
透视存在(wpK)wpk发牌逻... 透视存在(wpK)wpk发牌逻辑(透视)详细辅助解密教程(竟然是真的有挂)1、起透看视 wpk发牌逻...
透视辅助!智星德州菠萝偷偷看牌... 透视辅助!智星德州菠萝偷偷看牌功能,(线上wpk德州)都是是真的有挂(详细辅助wpk教程);1、实时...
透视苹果版(aapoker)a... 透视苹果版(aapoker)aapoker挂(透视)原来有挂(详细辅助安装教程)1、aapoker挂...
透视总结(Wpk)微扑克辅助软... 透视总结(Wpk)微扑克辅助软件(透视)详细辅助透明教程(原来有挂)1、点击下载安装,微扑克辅助软件...
透视了解!智星德州菠萝外挂,(... 透视了解!智星德州菠萝外挂,(手机德州)真是是有挂(详细辅助AI教程)1、构建自己的智星德州菠萝外挂...