前言
由於 Apache Flink 的開源二進制包未提供 HDP、MapR和 CDH 的下載,所以,如果要兼容基於這些廠商的庫編譯 Apache Flink。本文主要介紹使用 CDH 的庫進行編譯 Apache Flink 1.9.0,希望對讀者有所幫助。
內容
1、環境
Jdk 1.8、macOS10.14.6、Maven 3.6.2和Scala-2.11.8
2、源碼和CDH 版本
Flink 1.9.0 、 CDH 6.3.0(Hadoop 3.0.0、Spark 2.4.0)
3、步驟
(1)下載 Apache Flink 1.9.0
https://github.com/apache/flink/archive/release-1.9.0.tar.gz
(2)下載依賴的 flink-shaded 源碼
不同的 Flink 版本使用的 Flink-shaded不同,1.9.0 版本使用 7.0
https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-shaded-7.0/flink-shaded-7.0-src.tgz
解壓後,在 pom.xml 中,添加
<repositories>
<!-- ==================================================================== -->
<!-- =============== 配置依賴庫地址(用於加載CDH依賴的jar包) =============== -->
<!-- ==================================================================== -->
<repository>
<id>vdc</id>
<url>http://nexus.saas.hand-china.com/content/repositories</url>
</repository>
<repository>
<id>horton-works-releases</id>
<url>http://repo.hortonworks.com/content/groups/public/</url>
</repository>
<repository>
<id>mvn repository</id>
<url>https://mvnrepository.com/artifact/</url>
</repository>
<repository>
<id>CDH</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
編譯對應的 flink-shaded 版本
$ mvn clean install -DskipTests -Dhadoop.version=3.0.0-cdh6.3.0
(3)在 apache flink pom.xml 中刪除 test & docs 的module ,避免編譯報錯
(4)再編譯 Flink 源碼
$ mvn -T4C clean install -Dmaven.test.skip=true -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.3.0 -Dflink.shaded.version=7.0 -Dscala-2.11
(5)提取出 flink-1.9.0 二進制包即可
4、參考