準備工作 因為在編譯時需要下載許多依賴包,在執行編譯前最好先配置下代理倉庫 編譯flink shaded 因為flink依賴flink shaded工程,基本的依賴項都是在這個工程裡面定義的,所以要先編譯這個工程 1. 下載flink shaded工程 "flink shaded" 1. 在寫文章時 ...
準備工作
因為在編譯時需要下載許多依賴包,在執行編譯前最好先配置下代理倉庫
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
編譯flink-shaded
因為flink依賴flink-shaded工程,基本的依賴項都是在這個工程裡面定義的,所以要先編譯這個工程
- 下載flink-shaded工程flink-shaded
在寫文章時,最新的release版本是8.0,裡面用的hadoop及zookeeper對應版本如下
<properties> <avro.version>1.8.2</avro.version> <slf4j.version>1.7.15</slf4j.version> <log4j.version>1.2.17</log4j.version> <hadoop.version>2.4.1</hadoop.version> <zookeeper.version>3.4.10</zookeeper.version> <findbugs.version>1.3.9</findbugs.version> </properties>
將hadoop和zk改成自己CDH6.2.0對應的版本,修改flink-shaded-hadoop-2工程的pom文件
<properties> <avro.version>1.8.2</avro.version> <slf4j.version>1.7.15</slf4j.version> <log4j.version>1.2.17</log4j.version> <hadoop.version>3.0.0</hadoop.version> <zookeeper.version>3.4.5</zookeeper.version> <findbugs.version>1.3.9</findbugs.version> </properties>
- 修改編譯後的版本號
- 設置/Users/chengaofeng/git/flink-shaded/tools/releasing/update_branch_version.sh 工程中的OLD_VERSION=8.0和NEW_VERSION=9.0
- 在tools目錄下執行 sh releasing/update_branch_version.sh 命令
修改flink-shaded-hadoop-2和flink-shaded-hadoop-2-uber工程中依賴的外部變數名稱
<artifactId>flink-shaded-hadoop-2-uber</artifactId> <name>flink-shaded-hadoop-2-uber</name> <packaging>jar</packaging> <version>${hadoop.version}-9.0</version>
<artifactId>flink-shaded-hadoop-2</artifactId> <name>flink-shaded-hadoop-2</name> <packaging>jar</packaging> <version>${hadoop.version}-9.0</version>
進入flink-shaded目錄執行編譯
mvn clean install -DskipTests -Drat.skip=true -Pvendor-repos -Dhadoop.version.cdh=3.0.0
效果圖
編譯flink
- 下載源碼flink
- 寫文章時最新的release版本是1.9,所以下載1.9版本的代碼
修改對應的hadoop和flink.shaded.version值為我們需要的值
<hadoop.version>3.0.0</hadoop.version> ... <flink.shaded.version.old>7.0</flink.shaded.version.old> <flink.shaded.version>9.0</flink.shaded.version> ... <hivemetastore.hadoop.version>3.0.0</hivemetastore.hadoop.version>
因為只想更新hadoop的版本,所以依賴的其他flink-shaded版本不做變更,以下jackson舉例說明,還是用舊的版本(用最新的編譯沒有編譯過)
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-shaded-jackson</artifactId> <version>${jackson.version}-${flink.shaded.version.old}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-shaded-jackson-module-jsonSchema</artifactId> <version>${jackson.version}-${flink.shaded.version.old}</version> </dependency>
修改flink-connectors/flink-hbase中依賴的hbase版本號
<properties> <hbase.version>2.1.2</hbase.version> </properties>
之後需要修改這個工程中的AbstractTableInputFormat.java,TableInputFormat.java以及junit中的編譯錯誤
修改版本號
修改tools/change-version.sh中新舊版本號OLD="1.9-SNAPSHOT" NEW="1.9-H3"
執行腳本change-version.sh
註釋掉不需要編譯的工程,因為這個編譯太耗時間,可以把測試相關的包去掉
執行編譯
mvn clean install -DskipTests -Pvendor-repos -Drat.skip=true -Pinclude-hadoop
編譯結果
在工程中使用新編譯出的版本
<properties> <flink.version>1.9-H3</flink.version> </properties>
對應修改後的代碼地址github 版本:release-1.9