☰
【源码|编译】flink 12 源码编译及使用idea运行、debug
2026/11/3 1:10:58 网站建设 项目流程

文章目录

    • 0. 环境
    • 1. 编译
    • 2. 运行
      • 2.1. JobManager运行
        • 1. Main class
        • 2. VM options
        • 3. Program arguments
        • 4. Use classpath of module
        • 5. 运行
      • 2.2. TaskManager
    • 3. 其他待解决的
      • 日志只能打印error级别的

0. 环境

maven 3.6.3
java 1.8

1. 编译

maven命令

mvn clean install-DskipTests-Dscala-2.11-Dmaven.javadoc.skip=true-Dcheckstyle.skip=true-Drat.skip=true

maven 编译的时候跳过测试代码、javadoc 和代码风格检查,这样可以减少不少时间。

发现在终端使用命令行的方式,基本只需要编译一次即可,不过一般时间比较长,半个小时左右。

对于不是必需地、使用场景不多的module,以及编译时某些module打包出错的问题,可以先在pom中注掉,加快编译。


2. 运行

2.1. JobManager运行

配置:

1. Main class

在Main class配置栏中指定StandaloneSessionClusterEntrypoint

2. VM options

配置log4j 便于日志打印
配置classpath用于进程运行

-Dlog4j.configuration=file:/Users/lianggao/MyWorkSpace/001project/flink/build-target/conf/log4j-console.properties-classpath:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/flink-csv-1.12.3.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/flink-dist_2.11-1.12.3.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/flink-json-1.12.3.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/flink-shaded-zookeeper-3.4.14.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/flink-table-blink_2.11-1.12.3.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/flink-table_2.11-1.12.3.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/log4j-1.2-api-2.12.1.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/log4j-api-2.12.1.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/log4j-core-2.12.1.jar:/Users/lianggao/MyWorkSpace/001project/flink/build-target/lib/log4j-slf4j-impl-2.12.1.jar
3. Program arguments

用于指定flink-conf.yaml配置文件。同样在源码编译生成的build-target/conf路径中找到配置文件,当然也可以指定文件路径获取配置文件。

在flink-conf.yaml文件中,原则上不需要对参数做任何调整,如果JobManager和TaskManager不在同一台机器上,则需要修改flink-conf.yaml中的参数信息。

这里我们使用build-target/conf路径的默认配置

-c/Users/lianggao/MyWorkSpace/001project/flink/build-target/conf
4. Use classpath of module

选择flink-runtime_2.11模块。

5. 运行

点击运行,并访问:http://localhost:8081/#/overview


2.2. TaskManager

TaskManager和JobManager的启动方式基本一致,唯一的区别是启动类不同,TaskManager实例的启动类为org.apache.flink.runtime.taskexecutor.TaskManagerRunner。

但是似乎只运行几秒即直接挂掉。
不过没关系,现在我们可以debug了!!!

通过debug发现,taskmanager的动态参数没有配置,在Program arguments 继续添加以下参数,点击运行,此时发现可以了。

-D taskmanager.memory.framework.off-heap.size=134217728b-D taskmanager.memory.network.max=134217730b-D taskmanager.memory.network.min=134217730b-D taskmanager.memory.framework.heap.size=134217728b-D taskmanager.memory.managed.size=536870920b-D taskmanager.cpu.cores=1.0-D taskmanager.memory.task.heap.size=402653174b-D taskmanager.memory.task.off-heap.size=0b-D taskmanager.memory.jvm-metaspace.size=268435456b-D taskmanager.memory.jvm-overhead.max=201326592b-D taskmanager.memory.jvm-overhead.min=201326592b

以上就是在IDEA中搭建分布式集群调试环境的过程,通过客户端命令行可以向Flink集群提交作业并运行,在各个模块中设定代码调试断点。

3. 其他待解决的

日志只能打印error级别的

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询