Flink 源码环境搭建
本篇主要是记一下如何调试 Flink 的源码,以 Standalone 模式为例
一、编译
在GitHub 下载源码并编译:
1 | git clone git@github.com:apache/flink.git |
编译命令:
1 | mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -T 4 |
maven 的 settings.xml 文件的 mirror 添加:
1 | 1<mirror> |
编译命令:
1 | mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -T 4 |
等了一波时间之后,编译成功就长下图这样:
二、部署
为了部署方便, 简单写了个简陋的一键部署脚本💪~
1 | git clone https://gitee.com/Joccer_admin/chen-utils-manager.git |
三、调试
3.1. Standalone
首先,要启用远程调试, 需要添加一段 jvm
启动参数,这个参数我们可以通过下图中找到
即:
1 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 |
其中端口号根据时间情况而定,如果要从启动方法里开始调试,则需要设置 suspend=y
我们先从启动脚本看,从 start-cluster.sh
找到 config.sh
,可以发现 flink 会将如下 3 个配置项添加到指定的jvm启动参数中:
1 | jar 包启动时添加的参数,适用于 jobmanager 和 taskmanager; |
这3个配置均可以在
flink-conf.yaml
中配置,远程调试参数应当配置后两者,并且使用不同的端口,如果配置 env.java.opts 中,启动 jobmanager 和 taskmanager 将会出现端口占用冲突。
在 flink-conf.yaml
中添加:
1 | env.java.opts.jobmanager: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" |
启动集群
1 | start-cluster.sh |
standalone cluster 模式下:
- jobmanager 的入口类是 org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint
- taskmanager的入口类是 org.apache.flink.runtime.taskexecutor.TaskManagerRunner
找到 main() 方法打上断点就可以开始调试了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo