0%

IDEA编译Flink1.11.1

尝试熟悉一下IDEA直接编译Flink,顺手记录一下全过程。

IDEA编译Flink1.11.1

下载源码确保网路通畅不再赘述

编译说明

要想把技术沉淀下来,阅读源码是必不可少的,既然要阅读源码怎么能不会编译呢?

根据我的总结,编译中遇到的问题可以归纳为几种

网络问题和组件环境版本不兼容

网络问题在编译的过程中是始终困扰我的,后面详细讲讲。

组件环境版本我一直没怎么注意,觉得是想当然向下兼容。

编译环境

编译平台 mac & win10

编译java版本 8u202

编译maven版本 3.2.5

win10推荐使用Administrator账户(非必须)

1
net user administrator /active:yes

mac对于账户没有特别的要求

Git设置proxy(详细可以见设置 27条)

Maven设置proxy(详细可以见设置 29条)

Nodejs版本管理

mac下的nodejs版本管理工具,就是n

1
2
3
n list

n 直接选择版本

window下要安装一个nvm

1
2
3
4
5
6
先给nvm设置镜像
root: C:\APP\tools\nvm
path: C:\APP\tools\nodejs

node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/

nvm设置

1
2
3
4
5
nvm lsit

nvm install

nvm use

Flink 1.11.1的版本是 v10.9.0

根据经验,凡是要用到WebUI,涉及到nodejs编译是最麻烦的,先把这个包单独拿出来编译试一下。

首先确保网络通畅,我们在国内所谓网络通畅,少不了一个好用的VPN,有了VPN再谈别的,不然啥都白扯。

SSR或者别的VPN在我们喜欢的端口设置了全局代理之后,Git和Maven才能顺利的下载依赖。

但是在这个flink-runtime-web包里遇到一个双重代理的问题,我在Maven的setting.xml文件里面设置了proxy,所以在这里对于nodejs的操作:

1
2
[INFO] Found proxies: [ss{protocol='socks5', host='127.0.0.1', port=1080}]
[INFO] Running 'npm ci --cache-max=0 --no-save --https-proxy=http://127.0.0.1:1080 --proxy=http://127.0.0.1:1080' in /Users/flyhugh/Documents/Compile/flink-1.11.1/flink-runtime-web/web-dashboard

这样代理是无法正常下载的,我在setting.xml里面关掉了这个代理,运行的时候就变成了

1
[INFO] Running 'npm ci --cache-max=0 --no-save' in /Users/flyhugh/Documents/Compile/flink-1.11.1/flink-runtime-web/web-dashboard

这样的代码是可以通过的

网络问题

我宿舍的网是50M的,VPN的速度也很不错,但是使用maven代理的时候,速度却总是跟不上?不知道为什么

还好现在流量不贵了,使用流量代理速度总还凑合,以后有了5G速度就更行了。

总结

之前写过一篇杂七杂八的编译,成功的也莫名其妙,这次特地用了两个平台对比编译,其实只要调试好网络,设置好组件的proxy,Java和Maven的版本选择正确,编译并不是特别麻烦的事情。

不过那个pom确实是很复杂,如果自己修改源码的话,感觉还是挺麻烦的。

不过总算是解决了心头的一个结。

后续根据使用情况不定期更新。

内存设置得大一点(idea64.vmoptions << -Xmx8192m),编译速度会快不少。

WX20200831-142614@2x.png

QzpcVXNlcnNcZmx5aG9cQXBwRGF0YVxSb2FtaW5nXERpbmdUYWxrXDExMzI4MDM2MF92MlxJbWFnZUZpbGVzXDIxODg5NzUyOFwxNTk4ODgyNzcxODMwXzZGQjI5NjM4LTdGRDYtNDNjNC1CNTlBLUJGQ0FFMDA3RDEyRS5wbmc=.png

win10下通过普通用户也编译成功,内存多给,编译速度加快。