Flink 的 Standalone Cluster 模式直接使用相应版本即可,部署 Flink on YARN 需要重新编译对应 Hadoop版本。
这里编译 Flink1.9.1 ,CDH6.2 平台 Hadoop 版本是 hadoop-3.0.0-cdh6.2.0。
官方编译文档:Building Flink from Source
Flink国内镜像站:flink-1.9.1-src.tgz 、 flink-shaded-7.0-src.tgz
编译完成:Flink1.9.1-CDH6.2
将 Flink 对应的Hadoop版本编译打包到本地 Maven 库,编译 Flink 时会用到。Flink 1.9.1 对应 flink-shaded-7.0。
1. 修改 flink-shaded-7.0 的pom.xml
添加 cloudera repository
cloudera repo
https://repository.cloudera.com/artifactory/cloudera-repos/
mvn repo
https://mvnrepository.com
2. 修改 flink-shaded-hadoop-2-uber 的 pom.xml
添加
commons-cli
commons-cli
1.3.1
3. 编译源码
mvn clean install -DskipTests -Dhadoop.version=3.0.0-cdh6.2.0
# 获取源码
git clone https://github.com/apache/flink.git
# 进入源码目录
cd flink
# 查看版本
git tag
# 切换到 flink 1.9.1
git checkout release-1.9.1
# 查看当前所处的分支
git branch
-T4C: 指定4线程编译。
-DskipTests -Dfast: 跳过Tests、QA Plugins、JavsDocs等过程。
-Pinclude-hadoop: 编译时将 Hadoop二进制包放入Flink的lib中,去掉这个参数对Standalone模式没有影响,如果 Flink on YARN 模式,需要手动将编译完成的 /flink-shaded-hadoop/flink-shaded-hadoop2-uber/target/flink-shaded-hadoop2-uber-3.0.0-1.9.1.jar 拷贝到 $FLINK_HOME/lib/下。
-Pvendor-repos: 激活相关 Repositories,如 Cloudera 的 Repositories,在编译过程中下载依赖对应版本的库。
-Dscala-2.11: Flink1.7以后默认Scala2.11,如果使用Scala2.12需要指定Scala版本。
mvn -T4C clean install -DskipTests -Dfast -Pinclude-hadoop -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.2.0
YARN Test 类问题:/opt/flink2/flink-yarn/src/test/java/org/apache/flink/yarn/AbstractYarnClusterTest.java
在 flink-yarn 的 pom 文件 build 中添加忽略代码测试。
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
${java.version}
${java.version}
true
false
-Xpkginfo:always
编译完成,编译后的目录:
/flink/flink-dist/target/flink-1.9.1-bin/flink-1.9.1/
将目录内容打包上传至服务器即可。
将 Flink 对应的Hadoop版本编译打包到本地 Maven 库,编译 Flink 时会用到。Flink 1.9.1 对应 flink-shaded-7.0。
1. 修改 flink-shaded-7.0 的pom.xml
添加 cloudera repository
cloudera repo
https://repository.cloudera.com/artifactory/cloudera-repos/
mvn repo
https://mvnrepository.com
2. 修改 flink-shaded-hadoop-2-uber 的 pom.xml
添加
commons-cli
commons-cli
1.4.0
3. 编译源码
进入 flink-shaded-7.0 目录,运行 cmd
mvn clean install -DskipTests -Dhadoop.version=3.0.0-cdh6.2.0
1. 修改 flink-1.9.1 的 pom 文件,或者不修改,直接指定-Pvendor-repos自动下载依赖pom
cloudera repo
https://repository.cloudera.com/artifactory/cloudera-repos/
mvn repo
https://mvnrepository.com
vdc
http://nexus.saas.hand-china.com/content/repositories
horton-works-releases
http://repo.hortonworks.com/content/groups/public/
2. 编译 flink-1.9.1
mvn -T4C clean install -DskipTests -Dfast -Pinclude-hadoop -Dhadoop.version=3.0.0-cdh6.2.0 -Dflink.shaded.version=7.0 -Dscala-2.11
3. 报错:
/opt/flink2/flink-yarn/src/test/java/org/apache/flink/yarn/AbstractYarnClusterTest.java
在 flink-yarn 的 pom 文件 build 中添加忽略代码测试。
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
${java.version}
${java.version}
true
false
-Xpkginfo:always
继续执行上次的编译
mvn -T4C clean install -DskipTests -Dfast -Pinclude-hadoop -Dhadoop.version=3.0.0-cdh6.2.0 -rf :flink-yarn_2.11 -Dflink.shaded.version=7.0 -Dscala-2.11
4. 编译成功
编译完成,编译后的目录:
/flink/flink-dist/target/flink-1.9.1-bin/flink-1.9.1/
将目录打包上传至服务器即可。
不正确的设置可能会导致无法下载相应依赖
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
central
nexus-aliyun
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
maven cn repo
oneof the central mirrors in china
http://maven.net.cn/content/groups/public/
central
maven repo
Maven Repository Switchboard
http://repo1.maven.org/maven2/
central
maven repo2
central
Human Readable Name for this Mirror.
http://repo2.maven.org/maven2/
与 Flink1.9.1相同,这里也是 windows 下编译。
阿里镜像站下载:flink-shaded-10.0-src.tgz,flink-1.10.0-src.tgz
1. 编译 flink-shaded-10.0
修改pom,编译
mvn clean install -DskipTests -Dhadoop.version=3.0.0-cdh6.2.0
2. 编译 flink-1.10.0
删除pom中的测试模块
flink-yarn-tests
编译
mvn -T4C clean install -DskipTests -Dfast -Pinclude-hadoop -Dhadoop.version=3.0.0-cdh6.2.0 -Dflink.shaded.version=10.0 -Dscala-2.11