理解Flink之一編譯Flink-1.11.1


下載源碼

git clone -b release-1.11.1 https://github.com/apache/flink.git --depth=1 flink-1.11.1

編譯

mvn clean install -DskipTests -Dhadoop.version=2.6.0-cdh5.16.1 -Dscala-2.11

因為需要依賴cdh,所以在flink項目根目錄的pom.xml中添加如下內容:


cloudera
https://repository.cloudera.com/artifactory/cloudera-repos

異常

報錯信息 - 1:

[ERROR] Failed to execute goal on project flink-hadoop-fs: Could not
resolve dependencies for project
org.apache.flink:flink-hadoop-fs:jar:1.11.1: The following artifacts
could not be resolved:
org.codehaus.jackson:jackson-mapper-asl:jar:1.8.10-cloudera.1,
org.apache.hadoop:hadoop-common:jar:tests:2.6.0-cdh5.16.1: Could not
find artifact
org.codehaus.jackson:jackson-mapper-asl:jar:1.8.10-cloudera.1 in
repo.mfw (https://nexus.mfwdev.com/repository/maven-public/) -> [Help 1]

這個就是在沒有添加cdh的依賴所致,添加后就可以解決。

報錯信息 - 2:

[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile
(default-compile) on project flink-table-api-java: Compilation failure
[ERROR]

/home/mfw_hadoop/wenhao/flink-1.11.1/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/utils/OperationTreeBuilder.java:[631,85]
unreported exception X; must be caught or declared to be thrown

這是JDK的bug,在編譯機器上使用的是JDK版本為openjdk version “1.8.0_242”。JAVA_HOME卻設置為1.8.0_71。
將兩者統一為“1.8.0_242”后,解決該問題。
說明JDK為1.8.0_71是存在該問題的。
這也說明編譯機器的環境是有問題的,這個應當注意。

說明

因為考慮到flink將會在yarn上運行,所以在編譯時需要添加-Dhadoop.version=2.6.0-cdh5.16.1。這個版本應該與Hadoop集群版本一致。
從結果上看flink-1.11.1的編譯比以前更加簡單了。

其他

shaded
git clone https://github.com/apache/flink-shaded.git
mvn clean install -DskipTests -Dhadoop.version=2.6.0-cdh5.16.1

以前的flink版本中,還需要自己編譯shaded,這次編譯1.11.1,則不需要。不知是因為2.6.0-cdh5.16.1已經被編譯好了,還是其他原因。

javase下載地址
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM