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

準備工做

由於在編譯時須要下載許多依賴包,在執行編譯前最好先配置下代理倉庫java

<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工程,基本的依賴項都是在這個工程裏面定義的,因此要先編譯這個工程git

  1. 下載flink-shaded工程flink-shaded
  2. 在寫文章時,最新的release版本是8.0,裏面用的hadoop及zookeeper對應版本以下github

    <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文件apache

    <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工程中依賴的外部變量名稱json

    <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目錄執行編譯maven

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

效果圖oop

  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舉例說明,仍是用舊的版本(用最新的編譯沒有編譯過)url

    <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

相關文章
相關標籤/搜索