Flink 远程调试
原文链接
https://cwiki.apache.org/confluence/display/FLINK/Remote+Debugging+of+Flink+Clusters
不好意思,按照原文操作,是有BUG的。
BUG说明
Flink的文档中告诉你这么操作,在conf/flink-conf.yaml中添加如下一行:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
说白了,就是添加JVM参数了。但是这个/flink-conf.yaml同时影响了jobmanager和taskmanager。也就是说,如果按照文档来,就是要求两个JVM的进程都开5005远程端口。于是乎,端口冲突~
小姐(呃,i mean 小结):当taskmanager和jobmanger在同一node时,通过上述方式添加调试端口会有端口冲突。
解决方法
去看一下bin/config.sh的实现,就明白了,其实taskmanager和jobmanager的JVM参数是可以分开控的。于是在conf/flink-config.yaml中这么添加参数就OK了。
env.java.opts.jobmanager: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
env.java.opts.taskmanager