前言
由于 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、Kafka-2.2.1 、Hive-2.1.1 和 HBase-2.1.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 二进制包即可