1. 程式人生 > >Spark學習筆記之-Spark遠端除錯

Spark學習筆記之-Spark遠端除錯

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、有的斷點還斷不到,???摸索中