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 --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端口,暫停等待調試器連接,如下:
    
 
3、配置IDEA調試的一些參數
    Run -> Edit Configurations ->點擊左上角 ‘+’ -> Remote -> 設置連接端口  如下
    
 
 
4、在程序中設置斷點
    
 
5、Run -> Debug 進行調試啓動
 
6、Ok完成
    連接成功
    spark服務器端顯示如下:
    
    
    IDEA顯示:
    
 
    停在斷點,同本地調試一樣,也可以查看變量值等
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章