IDEA远程Debug(FLink)

本文详细介绍如何在Flink集群中配置远程调试,包括编辑配置文件、添加远程调试参数及解决常见问题。确保本地代码与集群一致,避免连接超时和端口冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 点击框框的编辑选项
    在这里插入图片描述
  2. 按下图添加远程调试,并配置参数
    在这里插入图片描述
  3. 将框里的字符串复制出来,并在前面加固定字符串,下面是需要在FLink配置中添加的完整字符串:
    env.java.opts.taskmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8843
    在这里插入图片描述
  4. 在Flink集群的某一节点上(建议远程Debug只留一个节点),找到Flink的配置文件flink-conf.yml,将第3步中的字符串添加进去,保存,并重启该节点的TaskManager服务。
  5. 启动。
    在这里插入图片描述

注意

  • 如果连接超时,多半是IP地址填写错误了…(别问我为啥知道,心里苦)
  • 如果是提示 java.net.ConnectException "Connection refused: connect",首先先检查端口有没有被占用,如果没有被占用,那么恭喜,很有可能是集群中有多个节点的配置文件中,都被添加了第3步中的配置,导致端口被重复使用了,这时候只保留其中一个节点的配置就行,其余节点的配置文件中,把那句配置删掉。(这个也别问我为啥知道。)

至此远程Debug工作就已经准备完毕了,发布一个Job就可以愉快的调试了。(记得要保证本地的代码和Flink上所用的代码是一致的。)

### 在 IntelliJ IDEA 中设置远程调试以运行 Flink 任务 要在 IntelliJ IDEA 中设置远程调试以运行 Flink 任务,需要完成以下几个方面的配置。以下是详细的说明和步骤: #### 1. 配置服务器端的 JVM 调试选项 在服务器端启动 Flink 的 JobManager 或 TaskManager 时,需要通过配置文件或命令行参数启用调试模式。可以通过修改 `${FLINK_HOME}/conf/flink-conf.yaml` 文件来添加以下内容[^4]: ```yaml # JobManager 调试端口 env.java.opts.jobmanager: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" # TaskManager 调试端口 env.java.opts.taskmanager: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006" ``` - `suspend=n` 表示 JVM 启动时不等待调试器连接。 - `address=5005` 和 `address=5006` 分别为 JobManager 和 TaskManager 的调试端口。 如果使用命令行启动 Flink 程序,可以直接添加调试参数[^3]: ```bash flink run -t yarn-per-job -c org.apache.flink.streaming.examples.socket.SocketWindowWordCount examples/streaming/SocketWindowWordCount.jar --port 9999 ``` 同时确保 JVM 参数中包含调试选项: ```bash -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 ``` #### 2. 配置 IntelliJ IDEA远程调试环境 在 IntelliJ IDEA 中配置远程调试的具体步骤如下[^2]: - 打开菜单 `Run -> Edit Configurations...`。 - 点击左上角的 `+` 按钮,选择 `Remote`。 - 在弹出的窗口中,填写以下信息: - **Name**: 输入一个名称,例如 `Flink Remote Debug`。 - **Host**: 远程服务器的 IP 地址(例如 `192.168.1.100`)。 - **Port**: 对应的调试端口(例如 JobManager 的 `5005` 或 TaskManager 的 `5006`)。 - 勾选 `Use module classpath`,并选择要调试的模块。 - 点击 `OK` 完成配置。 #### 3. 启动远程调试 - 在服务器端启动 Flink 程序后,确保 JVM 已经加载了调试参数。 - 在 IntelliJ IDEA 中,选择刚刚创建的调试配置(`Flink Remote Debug`),然后点击 `Debug` 按钮。 - IDEA 将尝试连接到指定的远程主机和端口。如果连接成功,可以开始设置断点并进行调试。 #### 4. 示例代码 以下是一个简单的 Flink 程序示例,用于验证调试是否正常工作: ```java import org.apache.flink.api.common.functions.FlatMapFunction; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.util.Collector; public class SocketWindowWordCount { public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> text = env.socketTextStream("localhost", 9999); text.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() { @Override public void flatMap(String value, Collector<Tuple2<String, Integer>> out) { for (String word : value.toLowerCase().split("\\W+")) { if (word.length() > 0) { out.collect(new Tuple2<>(word, 1)); } } } }) .keyBy(value -> value.f0) .sum(1) .print() .setParallelism(1); env.execute("Socket Window WordCount"); } } ``` ### 注意事项 - 确保服务器端的防火墙允许调试端口(如 `5005` 和 `5006`)的流量。 - 如果 `suspend=y`,则 JVM 启动后会等待调试器连接,直到连接成功后才会继续执行程序。 - 调试过程中,可以利用 IDEA 的断点、变量查看等功能分析程序行为。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值