flink編譯支持CDH6.2.0(hadoop3.0.0)


准備工作

因為在編譯時需要下載許多依賴包,在執行編譯前最好先配置下代理倉庫

<mirrors>
 
   
  <mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>*</mirrorOf>
	<name>Nexus aliyun</name>
	<url>https://maven.aliyun.com/repository/public</url>
  </mirror>
    
 </mirrors>  
 

因為flink依賴flink-shaded工程,基本的依賴項都是在這個工程里面定義的,所以要先編譯這個工程

  1. 下載flink-shaded工程flink-shaded

  2. 在寫文章時,最新的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>
    
  3. 將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>
    
  4. 修改編譯后的版本號

    • 設置/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 命令
  5. 修改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>
    
  6. 進入flink-shaded目錄執行編譯

mvn  clean install -DskipTests -Drat.skip=true -Pvendor-repos  -Dhadoop.version.cdh=3.0.0

效果圖

  1. 下載源碼flink

  2. 寫文章時最新的release版本是1.9,所以下載1.9版本的代碼

  3. 修改對應的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>
    
  4. 修改flink-connectors/flink-hbase中依賴的hbase版本號

    <properties>
    		<hbase.version>2.1.2</hbase.version>
    	</properties>
    

    之后需要修改這個工程中的AbstractTableInputFormat.java,TableInputFormat.java以及junit中的編譯錯誤

  5. 修改版本號
    修改tools/change-version.sh中新舊版本號

    OLD="1.9-SNAPSHOT"
    NEW="1.9-H3"
    
    
  6. 執行腳本change-version.sh

  7. 注釋掉不需要編譯的工程,因為這個編譯太耗時間,可以把測試相關的包去掉

  8. 執行編譯

    mvn clean install -DskipTests -Pvendor-repos -Drat.skip=true -Pinclude-hadoop
    
  9. 編譯結果

  10. 在工程中使用新編譯出的版本

    <properties>
    		<flink.version>1.9-H3</flink.version>
    	</properties>
    	
    

    對應修改后的代碼地址github 版本:release-1.9


免責聲明!

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



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