1、环境准备
JDK:建议使用 java_8u51 以上的java8 JDK,以避免使用 PowerMock Runner 的单元测试失败
maven:小白建议用3.2.5版本(Maven 3.3.x 可以构建 Flink,但是不能正确地屏蔽掉指定的依赖。Maven 3.2.5 可以正确地构建库文件) 安装方法这篇文章讲的很全。
IDE:我用的idea 2021.2
安装后记得在IDEA上修改maven配置,修改为与你的实际设置一样,我的配置如下图
2、源码下载
因为只有windows系统的电脑,安装虚拟机又比较慢,release-1.8版本支持windows启动,所以最终用了1.8版本,1.10、1.14版本在编译、运行中都碰到了非常多的问题,可能是因为太新,这个部分困扰了我四天。如果你也是在windows下使用,建议用1.8。
下载地址 https://github.com/apache/flink.git 记得下载完切换到release-1.8分支
3、导入IDEA(和4的顺序可以颠倒)
3.1 安装Scala
- 转到 IntelliJ Settings → Plugins 并选择 “Marketplace”。
- 选择并安装 “Scala” 插件。
- 如果出现提示,请重启 IntelliJ。
3.2 导入Flink
- 启动 IntelliJ IDEA 并选择 New → Project from Existing Sources。
- 选择已克隆的 Flink 存储库的根文件夹。
- 选择 “Import project from external model”,然后选择 “Maven”。
- 保留默认选项,然后依次单击 “Next”,直到到达 SDK 部分。
- 如果未列出 SDK,请使用左上角的 “+” 号创建一个。选择 “JDK”,选择 JDK 主目录,然后单击 “OK”。选择最合适的 JDK 版本。注意:此处应该是1.8版本。
- 单击 “Next” 继续,直到完成导入。
- 右键单击已导入的 Flink 项目 → Maven → Generate Sources and Update Folders。
4、编译源码
在IDEA terminal中使用如下命令, -DskipTests 用来跳过test,-Dfast用来加速
mvn clean install -DskipTests -Dfast
如果不幸出现了部分jar包无法下载,可能需要手动处理一下,详细见本文,文章里作者缺的是kafka-schema-registry-client-5.5.2.jar,你缺的jar包不一定在他给的地址里,可以在这里下载你需要的包,不是很好找,但是这网站里肯定有。
经过漫长的Build过程,如果出现 BUILD SUCESS 那么恭喜,编译成功。
编译出来的文件在 flink-dist
中
5、测试启动集群(standalone)
5.1 使用start-cluster.bat
找到 ~\flink-dist\src\main\flink-bin\bin\start-cluster.bat
双击即可启动job manager
和task manager
,成功的话会出现两个java窗口,在浏览器测试一下 localhost:8081
如果WEB UI正常显示,那么恭喜,启动成功。
5.2 在IDEA中调试
5.2.1启动JobManager
JobManager的入口类在orgapache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint
,main( )方法就在其中。点击Edit Configuration进行配置。
添加Application
对上面几个地方进行设置,尤其是vm options和program arguments
我的vm potions设置如下
-Dlog4j.configuration=E:\github\flink\flink-dist\target\flink-1.8-SNAPSHOT-bin\flink-1.8-SNAPSHOT\conf\log4j-console.properties
-classpath
E:\github\flink\flink-dist\target\flink-1.8-SNAPSHOT-bin\flink-1.8-SNAPSHOT\lib\*
我的 program arguments设置如下
--configDir
E:\github\flink\flink-dist\target\flink-1.8-SNAPSHOT-bin\flink-1.8-SNAPSHOT\conf
>
E:\github\flink\flink-dist\src\main\flink-bin\log\task-log.out
2>&1
照葫芦画瓢设置一下,把路径替换成你的路径
点击绿色三角试一下,如果没有报错,WEB UI也能打开,那么就成功了
5.2.1启动TaskManager
Task Manager 的入口类在org.apache.flink.runtime.taskexecutor.TaskManagerRunner
和job manager进行一样的设置标题
完事也是按绿色三角跑一下,在WEB UI看看能不能连上task manager,记得一定要先启动job manager 再启动 task manager。