编译 Flink代码

打印 上一主题 下一主题

主题 245|帖子 245|积分 735

构建环境

JDK1.8以上和Maven 3.3.x可以构建Flink,但是不能精确地遮盖某些依赖项。Maven 3.2.5会精确创建库。以是这里利用为了淘汰问题选择 Maven3.2.5版本举行构建。要构建单位测试,请利用Java 8以上,以防止利用PowerMock运行器的单位测试失败。
克隆 Git 堆栈

我们可以从github上下载Flink代码了。github上flink的代码堆栈链接。国内镜像地点链接。
  1. git clone https://gitee.com/mirrors/apache-flink.git
复制代码
留意下载的时间大概会出现如下问题:
  1. fatal: bad config value for 'http.postbuffer' in /root/.gitconfig
复制代码
办理方案是修改git默认的缓存巨细(500M)
  1. 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包。
  1. <mirror>
  2.     <id>nexus-aliyun</id>
  3.     <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf>
  4.     <name>Nexus aliyun</name>
  5.     <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  6. </mirror>
  7. <mirror>
  8.     <id>mapr-public</id>
  9.     <mirrorOf>mapr-releases</mirrorOf>
  10.     <name>mapr-releases</name>
  11.     <url>https://maven.aliyun.com/repository/mapr-public</url>
  12. </mirror>
  13. <mirror>
  14.     <id>confluent</id>
  15.     <mirrorOf>confluent</mirrorOf>
  16.     <name>confluent</name>
  17.     <url>http://packages.confluent.io/maven</url>
  18. </mirror>
  19. <mirror>
  20.     <id>mapr-public</id>
  21.     <mirrorOf>mapr-releases</mirrorOf>
  22.     <name>mapr-releases</name>
  23.     <url>https://maven.aliyun.com/repository/mapr-public</url>
  24. </mirror>
复制代码
可以通过这个链接查看aliyun提供的镜像堆栈的meta信息:https://maven.aliyun.com/mvn/view
获取 Git分支

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

  1. git branch -r
复制代码
源码切换到1.8分支
  1. git checkout release-1.8
复制代码
Maven 编译

常用下令,建议利用此下令,不编译tests的,否则你会碰到bink编译问题。
  1. mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true
复制代码
删除已有的build,编译flink binary #接着把flink binary安装在maven的local repository(默认是~/.m2/repository)中,如有问题百度办理,百度没有,多试频频,大概是网络的问题。
  1. mvn clean install -DskipTests
复制代码
另一种编译下令,相对于上面这个下令,主要的确保是:不编译tests、QA plugins和JavaDocs,因此编译要更快一些
  1. mvn clean install -DskipTests
  2. -Dfast
复制代码
另外,在一些环境下,我们大概并不想把编译后的flink binary安装在maven的local repository下,我们可以利用下面的下令:
  1. # 删除已有的 build,编译 flink binary
  2. mvn clean package -DskipTests
  3. # 另一种编译命令,相对于上面这个命令,主要的确保是:
  4. # 不编译 tests、QA plugins 和 JavaDocs,因此编译要更快一些
  5. mvn clean package -DskipTests -Dfast
复制代码
如果你需要利用指定hadoop的版本,可以通过指定-Dhadoop.version来设置,编译下令如下:
  1. mvn clean install -DskipTests
  2. -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,类似这种依赖问题。
  1. [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包链接,并执行如下下令举行安装
  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
复制代码
当乐成编译完成后,上述几种编译方式最终都能在当前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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

高级会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表