Flink1.12 CDH編譯

注意:從Flink 1.11開始,Flink項目不再正式支持使用Flink -shade -hadoop-2-uber版本。建議用戶通過HADOOP_CLASSPATH提供Hadoop依賴項。

Flink 在啓動Flink組件(如Client、JobManager或TaskManager)前,將環境變量HADOOP_CLASSPATH的值添加到classpath中。但大多數Hadoop發行版和雲環境不會默認設置HADOOP_CLASSPATH這個環境變量,所以如果Hadoop類路徑應該由Flink選擇,那麼必須在所有運行Flink組件的機器上設置這個環境變量。

如果運行在YARN上時,只需要執行下面一條腳本。因爲在YARN內部運行的組件將通過Hadoop類路徑啓動,但當向YARN提交作業時,Hadoop依賴項必須在類路徑中。

export HADOOP_CLASSPATH=`hadoop classpath`

1、配置maven鏡像

setting.xml

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*,!cloudera</mirrorOf>
    <name>阿里雲公共倉庫</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

2、下載flink源碼,並配置cdh倉庫

2.1 下載flink源碼

git clone https://github.com/apache/flink
cd flink
git checkout release-1.12.1-rc1

當前最新版本爲flink 1.12

2.2 配置cdh倉庫

vi flink/pom.xml

添加cdh倉庫:

<repositories>
    <repository>
        <id>cloudera</id>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
</repositories>

3、編譯

3.1 安裝java

D:\flink>java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

3.2 安裝scala

D:\flink>scala -version
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL

3.3 安裝maven

D:\flink>mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\Program Files\apache-maven-3.6.3\bin\..
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_261\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

3.4 編譯

cd flink
mvn clean install -DskipTests -Dfast -Dhadoop.version=3.0.0-cdh6.3.2

多線程加速編譯:

mvn clean install \
-DskipTests \ # 跳過測試部分
-Dfast \ # 跳過doc檢查等
-T 4 \ # 支持多處理器或者處理器核數參數,加快構建速度,推薦Maven3.3及以上
-Dmaven.compile.fork=true \ #允許多線程編譯,推薦maven在3.3及以上
-Dscala-2.11

編譯了一個小時左右,編譯完成:

bin包在 flink/flink-dist/target/flink-1.12.1-bin下面。

3.4 依賴屏蔽(可選)

Flink 屏蔽了一些它使用的包,這樣做是爲了避免與程序員自己引入的包的存在的可能的版本衝突。屏蔽掉的包包括 Google Guava,Asm,Apache Curator,Apache HTTP Components,Netty 等。

這種依賴屏蔽機制最近在 Maven 中有所改變。需要用戶根據 Maven 的的不同版本來執行不同的命令。

對於Maven 3.1.x and 3.2.x 直接在 Flink 源碼根目錄執行命令 mvn clean install -DskipTests 就足夠了。

Maven 3.3.x 如下的構建需要兩步走:第一步需要在基礎目錄下執行編譯構建;第二步需要在編譯後的 flink-dist 目錄下執行:

mvn clean install -DskipTests
cd flink-dist
mvn clean install

注意: 運行 mvn --version 以查看Maven的版本。


歡迎關注微信公衆號:大數據AI


本文分享自微信公衆號 - 大數據AI(songxt1990)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章