使用jvisualvm监控Spark作业

本机调试

  • 直接运行 jdk自带的 jvisualvm 进行进程,线程的查看和dump中类的调用

远程调试

  • 远程运行 jdk自带的 jvisualvm 进行进程,线程的查看和dump中类的调用

    spark 支持远程 jvisualvm 配置

  • jvisualvm工具JDK自带的一个监控工具,该工具是用来监控java运行程序的cpu、内存、线程等的使用情况,并且使用图表的方式监控java程序、还具有远程监控能力,不失为一个用来监控Java程序的好工具。

  • 同样,我们可以使用jvisualvm来监控Spark应用程序(Application),从而可以看到Spark应用程序堆,线程的使用情况,从而根据这些数据去优化您的程序。废话少说,下面来说说怎么配置,使得我们可以使用jvisualvm来监控程序:

  • 在$SPARK_HOME/conf目录下配置spark-default.conf文件,加入如下配置

      spark.driver.extraJavaOptions   -Dcom.sun.management.jmxremote.port=1099   -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
    
  • 修改$SPARK_HOME/conf目录下配置metrics.properties

    增加:*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
    
  • 重启动Spark应用程序
  • 打开 jdk 中的 jvisualvm