理解Flink之一编译Flink-1.11.1
下载源码
git clone -b release-1.11.1 https://github.com/apache/flink.git --depth=1 flink-1.11.1
编译
mvn clean install -DskipTests -Dhadoop.version=2.6.0-cdh5.16.1 -Dscala-2.11
因为需要依赖cdh,所以在flink项目根目录的pom.xml中添加如下内容:
异常
报错信息 - 1:
[ERROR] Failed to execute goal on project flink-hadoop-fs: Could not
resolve dependencies for project
org.apache.flink:flink-hadoop-fs:jar:1.11.1: The following artifacts
could not be resolved:
org.codehaus.jackson:jackson-mapper-asl:jar:1.8.10-cloudera.1,
org.apache.hadoop:hadoop-common:jar:tests:2.6.0-cdh5.16.1: Could not
find artifact
org.codehaus.jackson:jackson-mapper-asl:jar:1.8.10-cloudera.1 in
repo.mfw (https://nexus.mfwdev.com/repository/maven-public/) -> [Help 1]
这个就是在没有添加cdh的依赖所致,添加后就可以解决。
报错信息 - 2:
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile
(default-compile) on project flink-table-api-java: Compilation failure
[ERROR]
/home/mfw_hadoop/wenhao/flink-1.11.1/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/utils/OperationTreeBuilder.java:[631,85]
unreported exception X; must be caught or declared to be thrown
这是JDK的bug,在编译机器上使用的是JDK版本为openjdk version “1.8.0_242”。JAVA_HOME却设置为1.8.0_71。
将两者统一为“1.8.0_242”后,解决该问题。
说明JDK为1.8.0_71是存在该问题的。
这也说明编译机器的环境是有问题的,这个应当注意。
说明
因为考虑到flink将会在yarn上运行,所以在编译时需要添加-Dhadoop.version=2.6.0-cdh5.16.1。这个版本应该与Hadoop集群版本一致。
从结果上看flink-1.11.1的编译比以前更加简单了。
其他
shaded
git clone https://github.com/apache/flink-shaded.git
mvn clean install -DskipTests -Dhadoop.version=2.6.0-cdh5.16.1
以前的flink版本中,还需要自己编译shaded,这次编译1.11.1,则不需要。不知是因为2.6.0-cdh5.16.1已经被编译好了,还是其他原因。
javase下载地址
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html