Spark學習筆記之-Spark遠端除錯
阿新 • • 發佈:2019-01-24
Spark遠端除錯
本例子介紹簡單介紹spark一種遠端除錯方法,使用的IDE是IntelliJ
IDEA。
1、瞭解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不會暫停等待。
2、編譯打包,正常打包即可。
放到spark伺服器上跑之,執行:
a、spark-submit --supervise --classspark_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埠,暫停等待偵錯程式連線,如下:
3、配置IDEA除錯的一些引數
Run -> Edit Configurations ->點選左上角 ‘+’ -> Remote -> 設定連線埠 如下
4、在程式中設定斷點
5、Run -> Debug 進行除錯啟動
6、Ok完成
連線成功
spark伺服器端顯示如下:
IDEA顯示:
停在斷點,同本地除錯一樣,也可以檢視變數值等
PS:
1、除錯設定斷點的程式碼需要與執行的程式程式碼一致。
2、有的斷點還斷不到,???摸索中
這裡對上面的幾個引數進行說明:
-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不會暫停等待。