Flink1.12 CDH编译

大数据AI

共 3204字,需浏览 7分钟

 · 2021-09-04

注意:从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的版本。


欢迎关注微信公众号:大数据AI


浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报