編譯 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.pswp.cn/news/214871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214871.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云計算核心技術

1.1 云計算的定義 云計算是目前業內的熱點概念&#xff0c;它以開放的標準和服務為基礎&#xff0c;以互聯網為中心&#xff0c;提供安全、快速、便捷的數據存儲和網絡計算服務&#xff0c;讓互聯網這片“云”上的各種計算機共同組成數個龐大的數據中心及計算中心。它可以被看成…

求職智能分析系統

本項目是一個基于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;那時候…

Vue中 v-show 和 v-if 有什么區別

Vue中的 v-show 和 v-if 一.v-show 與 v-if 原理分析v-show 原理v-if 原理 二、v-show 與 v-if 的共同點三、v-show 與 v-if 的區別四、v-show 與 v-if 的使用場景使用 v-show 的場景&#xff1a;使用 v-if 的場景&#xff1a; 五、v-show 與 v-if 的優缺點v-show優點&#xff…

kafka rebalance(再均衡)導致的消息積壓分析

起因&#xff1a; 某天&#xff0c;項目組收到大量的kafka消息積壓告警。查看了kafka日志后&#xff0c;發現 kafka不斷地 rebalance(再均衡)。 Rebalance (再均衡)&#xff1a; 分區的所有權從一個消費者轉移到另一個消費者&#xff0c;這樣的行為被稱為Rebalance (再均衡)…

修改汽車的控制系統實現自動駕駛,基于一個開源的汽車駕駛輔助系統實現全自動駕駛

修改汽車的控制系統實現自動駕駛,基于一個開源的汽車駕駛輔助系統實現全自動駕駛。 自動駕駛汽車依靠人工智能、視覺計算、雷達、監控裝置和全球定位系統協同合作,讓電腦可以在沒有任何人類主動的操作下,自動安全地操作機動車輛。 演示視頻: Openpilot :一個開源的汽車駕…

Socks5代理與代理IP的技術創新

隨著全球市場的開放和跨界電商的崛起&#xff0c;企業在出海過程中面臨著復雜多變的網絡環境和地域限制。在這一背景下&#xff0c;Socks5代理和代理IP等技術應運而生&#xff0c;成為助力企業突破網絡壁壘、實現出海目標的重要工具。本文將深入探討Socks5代理和代理IP在跨界電…

OpenSSL 3.x爆出漏洞,如何妥善應對?

10月25日&#xff0c;OpenSSL項目團隊發布了OpenSSL 3.x版中一個關鍵安全漏洞的修復程序。該修復程序已于11月1日正式發布。 由于OpenSSL有著極為廣泛的使用&#xff0c;該公告引起了很大反響。Akamai希望能通過本文幫助相關用戶了解情況&#xff0c;介紹有關檢測和緩解威脅的…

怎么消除視頻中所有的聲音?方法很簡單

當我們想把視頻中去掉聲音&#xff0c;可能有多種原因&#xff0c;也許需要制作一個無聲視頻&#xff0c;或者想在視頻中添加自己的音樂或解說&#xff0c;特別是一些搞笑解說&#xff0c;無論原因是什么&#xff0c;到底要怎么把視頻中所有的聲音都去除呢&#xff1f; 小編給…

計算機畢業設計 基于Web的網上購物系統(pc端仿淘寶系統)的設計與實現 Java實戰項目 附源碼+文檔+視頻講解

博主介紹&#xff1a;?從事軟件開發10年之余&#xff0c;專注于Java技術領域、Python人工智能及數據挖掘、小程序項目開發和Android項目開發等。CSDN、掘金、華為云、InfoQ、阿里云等平臺優質作者? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精…

SVN優缺點詳解及版本控制系統選型建議

Subversion (SVN)是目前可用的眾多版本控制選項之一。本篇文章將全面概述什么是 SVN、SVN的歷史、SVN存儲庫是什么&#xff0c;以及在切換到SVN之前您應該謹慎考慮的潛在問題。 什么是Subversion&#xff08;SVN&#xff09;&#xff1f; Subversion軟件&#xff0c;也稱為SV…

管理類聯考——數學——真題篇——按知識分類——代數

文章目錄 2023真題(2023-09)-代數-一元二次方程-注意絕對值的有效性真題(2023-17)-代數-一元二次方程-舉反例真題(2023-18)-數列-等比數列真題(2023-24)-數列-等比數列2022真題(2022-03)-代數-整式-因式分解真題(2022-19)-數列-等比數列真題(2022-21)-數列-等比數…

Docker的常用命令(沒有廢話)

目錄 鏡像 鏡像管理命令 鏡像構建命令 鏡像標簽和推送命令 其他命令 容器 運行容器 停止和刪除容器 查看容器信息 進入容器 數據卷 列出卷 創建和刪除卷 將卷掛載到容器 鏡像 鏡像管理命令 docker images # 列出本地所有的鏡像 docker search <關鍵詞> #…

使用pe安裝windows操作系統

一、系統安裝前準備工作&#xff0c;制作系統盤 &#xff08;1&#xff09;拷貝電腦上的資料 &#xff08;2&#xff09;準備一個至少8G的U盤 &#xff08;3&#xff09;下載windows鏡像文件及pe軟件 通過百度網盤可下載下列軟件及鏡像 windows鏡像文件&#xff08;百度網盤…

知識筆記(五十二)———MySQL 安裝

Linux/UNIX 上安裝 MySQL Linux平臺上推薦使用RPM包來安裝Mysql,MySQL AB提供了以下RPM包的下載地址&#xff1a; MySQL - MySQL服務器。你需要該選項&#xff0c;除非你只想連接運行在另一臺機器上的MySQL服務器。MySQL-client - MySQL 客戶端程序&#xff0c;用于連接并操作…

Kotlin 中的 `as` 關鍵字:類型轉換的藝術

在 Android 編程中&#xff0c;類型轉換是一項常見的操作。為了使這一過程更加流暢和安全&#xff0c;Kotlin 提供了 as 關鍵字。本文將深入探討 as 關鍵字的用法和最佳實踐。 一、as 關鍵字的基本概念 &#x1f680; as 關鍵字在 Kotlin 中用于顯式類型轉換。它將一個表達式…

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…

2023-12-05 Qt學習總結3

點擊 <C 語言編程核心突破> 快速C語言入門 Qt學習總結 前言九 QObject基類十 QWidget基類十一 QMainWindow類總結 前言 要解決問題: 學習qt最核心知識, 多一個都不學. 九 QObject基類 QObject是Qt中最基本的類&#xff0c;所有Qt中的對象都從該基類派生而來。 QObjec…