编译 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.mzph.cn/news/214871.shtml

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

相关文章

求职智能分析系统

本项目是一个基于Flask轻量级框架的计算机就业数据可视化分析平台。 采用echarts和ajax等技术进行数据展示和用户交互。

【电路笔记】-电位器

电位器 文章目录 电位器1、概述2、电位器类型2.1 旋转电位器2.2 滑块电位器2.3 预设和微调电位器2.4 变阻器 3、电位器示例14、电位器作为分压器5、电位器示例26、变阻器6、滑块变阻器7、线性或对数电位器8、总结 当连接的轴物理旋转时&#xff0c;电位计和变阻器的电阻值会发生…

一个简单的Wireshark和TCP三次握手,为什么能难住阿里6年测试?

之前写过一篇博客&#xff1a;用 Fiddler 来调试HTTP&#xff0c;HTTPS。 这篇文章介绍另一个好用的抓包工具wireshark&#xff0c; 用来获取网络数据封包&#xff0c;包括http,TCP,UDP&#xff0c;等网络协议包。 记得大学的时候就学习过TCP的三次握手协议&#xff0c;那时候…

修改汽车的控制系统实现自动驾驶,基于一个开源的汽车驾驶辅助系统实现全自动驾驶

修改汽车的控制系统实现自动驾驶,基于一个开源的汽车驾驶辅助系统实现全自动驾驶。 自动驾驶汽车依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作,让电脑可以在没有任何人类主动的操作下,自动安全地操作机动车辆。 演示视频: Openpilot :一个开源的汽车驾…

怎么消除视频中所有的声音?方法很简单

当我们想把视频中去掉声音&#xff0c;可能有多种原因&#xff0c;也许需要制作一个无声视频&#xff0c;或者想在视频中添加自己的音乐或解说&#xff0c;特别是一些搞笑解说&#xff0c;无论原因是什么&#xff0c;到底要怎么把视频中所有的声音都去除呢&#xff1f; 小编给…

计算机毕业设计 基于Web的网上购物系统(pc端仿淘宝系统)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

使用pe安装windows操作系统

一、系统安装前准备工作&#xff0c;制作系统盘 &#xff08;1&#xff09;拷贝电脑上的资料 &#xff08;2&#xff09;准备一个至少8G的U盘 &#xff08;3&#xff09;下载windows镜像文件及pe软件 通过百度网盘可下载下列软件及镜像 windows镜像文件&#xff08;百度网盘…

vue零基础

vue 与其他框架的对比 框架设计模式数据绑定灵活度文件模式复杂性学习曲线生态VueMVVM双向灵活单文件小缓完善ReactMVC单向较灵活all in js大陡丰富AngularMVC双向固定多文件较大较陡&#xff08;Typescript&#xff09;独立 更多对比细节&#xff1a;vue 官网&#xff1a;ht…

matplotlib绘图时show函数需在save函数后

matplotlib绘图时&#xff0c;先调用show&#xff0c;后调用save函数保存图像&#xff0c;否则无法保存图像信息 figsize 23,10 #fig, axes plt.subplots(nrows1, ncols2) fig, axs plt.subplots(4, 3, sharexcol,shareyrow,figsizefigsize) # 在每个子图中绘制一个图形 pi…

Hbase2.5.5分布式部署安装记录

文章目录 1 环境准备1.1 节点部署情况1.2 安装说明 2 Hbase安装过程Step1&#xff1a;Step2:Step3:Step4&#xff1a; 3 Web UI检查状态并测试3.1 Web UI3.2 创建测试命名空间 1 环境准备 1.1 节点部署情况 Hadoop11&#xff1a;Hadoop3.1.4 、 zookeeper3.4.6、jdk8 Hadoop1…

JOSEF 静态延时中间继电器 JZS-7G/42 DC110V 导轨安装

系列型号&#xff1a; JZS-7G-57端子排延时中间继电器&#xff1b; JZS-7G-42X端子排延时中间继电器&#xff1b; JZS-7G-22X端子排延时中间继电器&#xff1b; JZS-7G-21端子排延时中间继电器&#xff1b; JZS-7G-41端子排延时中间继电器&#xff1b; JZS-7G-51端子排延…

git bash查看远程仓库地址

进入代码路径 git remote -vgit remote -v

排程系统中关于任务优先级的需求延伸与设计构思

无论是面向销售订单的MPS&#xff0c;还是基于多工序制约关系的APS&#xff0c;还是具体车间生产中针对单一工序的任务作业调度优化&#xff0c;都存在基于被排程对象(例如销售订单、生产工单、工序任务)的优先级进行优化的需求场景。当我们仅在宏观、较高层次的角度考虑&#…

高效扫频阻垢装置广谱感应水处理设备介绍工作原理使用参数和选型

​ 1&#xff1a;高效扫频阻垢装置设备介绍 高效扫频阻垢装置是一种通过控制箱释放变频电磁信号&#xff0c;传输到信号放大装置&#xff0c;管道外侧的电磁线圈和电锤产生高频机械振动&#xff0c;在管道和水中传输&#xff0c;通过共振机理破坏水分子之间的氢键&#xff0c;产…

Java - Lombok介绍、使用、工作原理、优缺点

介绍 Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging vari…

算法Day28 二进制差异序列(格雷码)

二进制差异序列&#xff08;格雷码&#xff09; Description n 位二进制差异序列是一个由2^n个整数组成的序列&#xff0c;其中&#xff1a; 每个整数都在范围[0, 2^n - 1]内&#xff08;含0和2^n - 1&#xff09; 第一个整数是0 一个整数在序列中出现不超过一次 每对相邻整数…

【网络安全】CTF入门教程(非常详细)从零基础入门到进阶,看这一篇就够了!

一、CTF简介 CTF&#xff08;Capture The Flag&#xff09;中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。…

计算机丢失msvcp140dll怎么恢复?快速解决dll缺失问题

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140dll丢失”。msvcp140.dll是一个动态链接库文件&#xff0c;它包含了许多C标准库函数的实现。这些动态链接库文件是程序运行所必需的&#xff0c;它们包含了许多函数和资源&#xf…

圣诞新奇惊喜:利用 AI 技术帮助圣诞老人创建手写信件

人工智能甚至正在接管北极的任务。在即将到来的圣诞节假期之前&#xff0c;圣诞老人和他的助手们迎来了一项革命性的技术支持。一群乐于助人的精灵采用了人工智能技术&#xff0c;制作出独一无二、看似亲手书写的信件&#xff0c;以确保遵守圣诞老人的「北极标准」。 这些信件通…

C语言实现选择排序

完整代码&#xff1a; #include<stdio.h>//交换函数&#xff0c;交换两个数 void swap(int *a,int *b){int temp;temp*a;*a*b;*btemp; }//选择排序&#xff0c;从小到大 //参数&#xff1a;arr[]表示待排序数组&#xff0c;len表示该数组长度 void select_sort(int arr[…