Spark遠程調試
本例子介紹簡單介紹spark一種遠程調試方法,使用的IDE是IntelliJ IDEA。
一、瞭解jvm一些參數屬性
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888
這裏對上面的幾個參數進行說明:
-Xdebug 啓用調試特性
-Xrunjdwp 啓用JDWP實現,包含若干子選項:
transport=dt_socket JPDA front-end和back-end之間的傳輸方法。dt_socket表示使用套接字傳輸。
address=8888 JVM在8888端口上監聽請求,這個設定爲一個不衝突的端口便可。
server=y y表示啓動的JVM是被調試者。若是爲n,則表示啓動的JVM是調試器。
suspend=y y表示啓動的JVM會暫停等待,直到調試器鏈接上才繼續執行。suspend=n,則JVM不會暫停等待。
二、編譯打包,正常打包便可。
放到spark服務器上跑之,執行:
a、spark-submit --supervise --class spark_security.Sockpuppet --name "testkdl1" --executor-memory 8192M --num-executors 8 --master yarn-client
--driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888" spark_Security-1.0-SNAPSHOT.jar logindelaer.properties
其中對應加色字體爲:包中具體的方法、打包的文件、對應方法的配置文件
黑色加粗參數爲:啓用遠程調試參數
b、也可在conf/spark-env.sh這個文件最後加入
export SPARK_JAVA_OPTS+="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888"
不過沒有進行實際測試
執行結果會顯示以下,監聽8888端口,暫停等待調試器鏈接,以下:
三、配置IDEA調試的一些參數
Run -> Edit Configurations ->點擊左上角 ‘+’ -> Remote -> 設置鏈接端口 以下
四、在程序中設置斷點
五、Run -> Debug 進行調試啓動
六、Ok完成
鏈接成功
spark服務器端顯示以下:
IDEA顯示:
停在斷點,同本地調試同樣,也能夠查看變量值等