远程Debug Spark

2017-09-23  本文已影响115人  zhouhaolong1

目录:

本文总结了怎么调试Spark的Master和Worker的源码,以及怎么调试自己的Spark程序

<h2 id="master">Debug Master</h2>

  1. 修改Master所在节点的$SPARK_HOME/conf/spark-env.sh文件,在文件中添加如下内容,意思是在运行Master的时候挂起.

     #remote debug args
    
     export SPARK_MASTER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
    
  2. 启动Master

- 执行 $SPARK_HOME/sbin/start-master.sh   

- jps 看到master被挂起

    ![image.png](https://img.haomeiwen.com/i1950473/98885fd7a35ace6d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. 在IntelJ中创建一个Remote Application, 点击 Run -> Edit Configurations... -> + -> Remote -> 输入Name,Host,Port
    如下图:

    image.png
  2. 在IntellJ中Master的main方法打上断点

    • 双shift输入Master,注意选择和集群上版本一致的Spark,否者会连不上,并且会提示

        *Remote Debug Connected to the target VM, address: '192.168.33.21:5005', transport: 'socket'*   
      
      image.png
    • 找到main方法,打上断点

      image.png
  1. 选择运行Master,点击小虫子进行debug.

    image.png

<h2 id="worker">Debug Worker</h2>

  1. 修改Worker所在节点的$SPARK_HOME/conf/spark-env.sh文件,在文件中添加如下内容,意思是在运行Worker的时候挂起.

     #remote debug args
    
     export SPARK_WORKER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006"
    
  2. 启动Worker

    • 启动worker要加上Master的地址

        [hadoop@mini2 ~]$ $SPARK_HOME/sbin/start-slave.sh spark://mini1:7077
      
    • Worker会自动被挂起

  3. 在IntelJ中创建一个Remote Application,修改Name,Host,Port 如图:

    image.png
  4. 在IntellJ中Worker的main方法打上断点,注意选择和集群上版本一致的Spark

  5. 选择运行Worker,点击小虫子进行debug.

    image.png

<h2 id="yourSparkApp">Debug YourSparkApp</h2>

  1. 提交任务之后,会自动监听端口

     [hadoop@mini1 ~]$ spark-submit --class cn.zhou.bigdata.SparkWrit2DB --master spark://mini1:7077 --driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5007" SparkLearning-1.0-SNAPSHOT.jar 
    
    image.png
  2. 创建一个Remote Application, 输入Name,Host,Port, 注意host是启动任务的节点的ip,port是提交任务时指定的5007

    image.png
  1. 打好断点,点击小虫子Debug

    image.png
上一篇下一篇

猜你喜欢

热点阅读