Flink源码拾遗<一>:源码下载、导入与编译

搭建Apache Flink本地开发环境及编译测试
本文详细介绍了如何在Windows环境下搭建Apache Flink的开发环境,包括JDK、Maven和IDEA的配置,源码下载与导入,以及编译和测试启动Flink集群的步骤。特别提醒,建议使用Flink 1.8版本以避免编译问题,并提供了遇到jar包下载问题时的解决办法。

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 managertask 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。

 祝你一次成功😘

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>flink-cdc</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>flink-cdc</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <flink-version>1.16.0</flink-version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!--flink依赖--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>${flink-version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-core</artifactId> <version>${flink-version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java</artifactId> <version>${flink-version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_2.12</artifactId> <version>${flink-version}</version> </dependency> <!-- flink-table APi 和sql 的支持--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-scala_2.12</artifactId> <version>${flink-version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-scala_2.12</artifactId> <version>${flink-version}</version> </dependency> <!-- 本地运行需要flink-clients--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients</artifactId> <version>${flink-version}</version> </dependency> <!-- 查询器支持flinksql的方式--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner_2.12</artifactId> <version>${flink-version}</version> </dependency> <!-- 查看本地客户端runtime--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-runtime</artifactId> <version>${flink-version}</version> </dependency> <!-- bridge桥接器--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-java-bridge</artifactId> <version>${flink-version}</version> </dependency> <!-- flinkcdc的三个jar包--> <!-- cdc(捕获数据改变)--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-base</artifactId> <version>${flink-version}</version> </dependency> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-mysql-cdc</artifactId> <version>3.0.0</version> </dependency> <!-- <dependency>--> <!-- <groupId>org.apache.flink</groupId>--> <!-- <artifactId>flink-connector-kafka_2.12</artifactId>--> <!-- <version>1.14.6</version>--> <!-- </dependency>--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka</artifactId> <version>${flink-version}</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> </dependencies> </project> 参考这套pom文件依赖修改并去掉不必要的依赖,写flinkcdc的程序监控mysql的某个库下的表的变更将binlog日志写到kf的scr主题即可
最新发布
08-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值