Flink源代码编译部署
以[release-1.10]版本为例
以 [Flink官方文档] 为参考
构建准备:
[Ubuntu 18 安装] Linux衍生系统
[Python 2.X系列版本] Flink-release10专门用到的基础环境,和
flink-runtime-web
模块构建相关[Java 1.8+ 版本安装] Java环境
-
[Maven 3.3+ 版本安装]
- 编译构建工具,最好在构建maven环境时将maven运行的
Xmx
和Xms
参数适当调大 - 在Maven settings.xml中配置
阿里的maven仓库地址
,可加速依赖下载速度. - 注意!!! 最好将配置好的settings.xml同时放到/home/username/.m2/路径下一份
<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> <!-- <mirror> <id>cloudera</id> <name>cloudera</name> <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> <mirrorOf>*,!mapr-releases,!confluent</mirrorOf> </mirror>--> <mirror> <id>nexus-aliyun-apache</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun apache</name> <url>http://maven.aliyun.com/nexus/content/repositories/apache-snapshots/</url> </mirror> <mirror> <id>nexus-aliyun</id> <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> <mirror> <id>mapr-public</id> <mirrorOf>mapr-releases</mirrorOf> <name>mapr-releases</name> <url>https://maven.aliyun.com/repository/mapr-public</url> </mirror> </mirrors>
- 编译构建工具,最好在构建maven环境时将maven运行的
[Git安装] 代码管理
[IntelliJ Idea安装] 阅读源代码和远程调试使用
开始构建
- 创建工作目录:
mkdir flink_code_location
,
创建一个目录作为Flink源代码下载目录,比如flink_code_location
- 将 [flink] 项目仓库fork到自己的github
- 切换到工作目录:
cd flink_code_location
,
从自己的github中pull flink的源代码,git clone git@github.com:${username}/flink.git
- 分支准备:进入flink代码目录,
cd flink
;
切换到flink-1.10f分支,git checkout release-1.10
;
从此分支构建自己的分支,git checkout -b your_branch_base_release-1.10
- 执行编译:
mvn clean package -T 4 -Dfast -Dmaven.compile.fork=true -DskipTests -Dscala-2.11
- 参数说明
mvn \
#清理往次的maven构建记录和结果
clean \
#安装/打包
install /package \
#支持多处理器或者处理器核数参数,加快构建速度,推荐Maven3.3及以上
-T 4 \
#在flink根目录下pom.xml文件中fast配置项目中含快速设置,其中包含了多项构建时的跳过参数.
#例如apache的文件头(rat)合法校验,代码风格检查,javadoc生成的跳过等,详细可阅读pom.xml
-Dfast \
#官方文档中声明有预构建完成的几个版本,可参考官方文档.本地版调试学习如果不涉及到state的文件系统存储持久化则不需要开启此配置项
-Pinclude-hadoop -Dhadoop.version=2.7.5 \
#允许多线程编译,推荐maven在3.3及以上
-Dmaven.compile.fork=true \
-DskipTests \ #之所以不开启-Dmaven.test.skip=true而使用此选项时因为如果要完整构建flink项目,
#其中flink-test*模块中的代码非test范围,而其中使用了flink-runtime中test代码构建,
# 所以如果不在根目录pom.xml中注释掉flink-test*模块,使用此选项会报错找不到相关包或者类
-Dscala-2.11 #制定flink的scala版本代码
- 根据官方文档声明,maven3.3+需要执行shade依赖的maven命令
cd flink-dist/ && mvn clean install
,(个人测试,不执行此步骤对本地方式的集群启动无影响)
编译结果
- 编译成功以后可用的flink文件夹资源在flink/build-target文件夹下
集群本地模式启动
- 启动集群本地模式
cd build-target/flink-*-bin/*/
./start-cluster.sh
- 在本地浏览器访问Flink_WebUI,提交flink任务测试即可。