環境說明:
flink 集羣運行在centos8 下, idea 運行在windows10 下.
Flink 集羣開啓調試功能
在文件 flink-conf.yaml 添加兩行配置:
# jobmanager debug端口
env.java.opts.jobmanager: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006"
# taskmanager debug端口
env.java.opts.taskmanager: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
idea配置
1 配置remote:
如上圖所示,點擊Edit Configurations,進入如下界面:
如上圖所示,我們進入了Run/Debug Configurations界面,然後點擊左上角的+,選擇Remote:
標註 1:名稱,自定;
標註 2:調試模式,默認爲Attach;
標註 3:傳輸方式,默認爲Socket;
標註 4:服務端 IP 地址,默認爲localhost,修改爲對應flink集羣運行的 IP 地址;
標註 5:服務器端口號,默認爲5005,修改爲flink集羣任務端口5006,參見flink集羣debug配置;
標註 6:使用默認即可,其中端口號根據標註5的值自動更新。
標註 7:對應發佈的module名稱。
補充說明:
如上圖所示,其中 標註 2 和 標註 3 又分別有兩種分類,對於 標註 2
標註 2:調試模式,默認爲Attach;
Attach:此種模式下,調試服務端(被調試遠程運行的機器)啓動一個端口等待我們(調試客戶端)去連接;
Listen: 此種模式下,是我們(調試客戶端)去監聽一個端口,當調試服務端準備好了,就會進行連接。
2 設置完成後,點擊Debug按鈕運行,如果連接成功,則會出現如下提示:
idea端操作
在需要調試的源碼加上斷點,等候操作
flink集羣操作
在集羣端提交運行要調試的任務(與要調試的源碼與jar最好一致,否則容易錯位)
線程並行調試設置
如調試時,不想影響其他線程,可在斷點上右鍵,勾上Thread選項即可,這樣就不會阻塞.