Flink1.12 CDH编译
注意:从Flink 1.11开始,Flink项目不再正式支持使用
Flink -shade -hadoop-2-uber
版本。建议用户通过HADOOP_CLASSPATH
提供Hadoop依赖项。
Flink 在启动Flink组件(如Client、JobManager或TaskManager)前,将环境变量HADOOP_CLASSPATH
的值添加到classpath中。但大多数Hadoop发行版和云环境不会默认设置HADOOP_CLASSPATH
这个环境变量,所以如果Hadoop类路径应该由Flink选择,那么必须在所有运行Flink组件的机器上设置这个环境变量。
如果运行在YARN上时,只需要执行下面一条脚本。因为在YARN内部运行的组件将通过Hadoop类路径启动,但当向YARN提交作业时,Hadoop依赖项必须在类路径中。
export HADOOP_CLASSPATH=`hadoop classpath`
1、配置maven镜像
setting.xml
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*,!cloudera</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
2、下载flink源码,并配置cdh仓库
2.1 下载flink源码
git clone https://github.com/apache/flink
cd flink
git checkout release-1.12.1-rc1
当前最新版本为flink 1.12
2.2 配置cdh仓库
vi flink/pom.xml
添加cdh仓库:
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
3、编译
3.1 安装java
D:\flink>java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
3.2 安装scala
D:\flink>scala -version
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL
3.3 安装maven
D:\flink>mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\Program Files\apache-maven-3.6.3\bin\..
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_261\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
3.4 编译
cd flink
mvn clean install -DskipTests -Dfast -Dhadoop.version=3.0.0-cdh6.3.2
多线程加速编译:
mvn clean install \
-DskipTests \ # 跳过测试部分
-Dfast \ # 跳过doc检查等
-T 4 \ # 支持多处理器或者处理器核数参数,加快构建速度,推荐Maven3.3及以上
-Dmaven.compile.fork=true \ #允许多线程编译,推荐maven在3.3及以上
-Dscala-2.11
编译了一个小时左右,编译完成:
bin包在
flink/flink-dist/target/flink-1.12.1-bin
下面。
3.4 依赖屏蔽(可选)
Flink 屏蔽了一些它使用的包,这样做是为了避免与程序员自己引入的包的存在的可能的版本冲突。屏蔽掉的包包括 Google Guava,Asm,Apache Curator,Apache HTTP Components,Netty 等。
这种依赖屏蔽机制最近在 Maven 中有所改变。需要用户根据 Maven 的的不同版本来执行不同的命令。
对于Maven 3.1.x and 3.2.x 直接在 Flink 源码根目录执行命令 mvn clean install -DskipTests
就足够了。
Maven 3.3.x 如下的构建需要两步走:第一步需要在基础目录下执行编译构建;第二步需要在编译后的 flink-dist 目录下执行:
mvn clean install -DskipTests
cd flink-dist
mvn clean install
注意: 运行 mvn --version
以查看Maven的版本。