前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用VisualVM监控Spark Driver/Executor

利用VisualVM监控Spark Driver/Executor

作者头像
大数据真好玩
发布2020-11-30 10:55:10
9920
发布2020-11-30 10:55:10
举报
文章被收录于专栏:暴走大数据

VisualVM是我们平时最常用的Java应用监控和性能分析工具,功能很丰富。我们有时会利用它来监控Spark作业,主要是Driver和Executor的运行情况。VisualVM支持jstatd和JMX两种方式连接远程JVM,本文简单叙述一下方法。

jstatd方式

1 在服务器的$JAVA_HOME/bin目录下新建jstatd.all.policy文件,并写入以下内容。

代码语言:javascript
复制
grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
};

2 后台启动jstatd进程

代码语言:javascript
复制
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=`hostname` &

3 点击VisualVM的File->Add Remote Host菜单项,输入远程服务器的IP或者主机名,就可以自动开始监听。

如下图所示,选择CoarseGrainedExecutorBackend,就可以看到Executor的运行情况。jstatd方式虽然不能看到很详细的度量数据,但是其优势是可以使用Visual GC,JMX则不可以。

JMX方式

1 在$SPARK_HOME/conf目录下创建度量系统的配置文件metrics.properties。它可以从其模板文件metrics.properties.template复制而来,如果没有的话,可以从Spark源码中拷贝。然后修改它,加入JvmSource和JmxSink。

代码语言:javascript
复制
*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
master.source.jvm.class=org.apache.spark.metrics.source.JvmSource
worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource
driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource
executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource

2 修改$SPARK_HOME/conf目录下的spark-defaults.conf,加入以下配置。端口号可以自行配置。

代码语言:javascript
复制
spark.metrics.conf=/opt/cloudera/parcels/SPARK2/lib/spark2/conf/metrics.properties
spark.driver.extraJavaOptions=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=11990
spark.executor.extraJavaOptions=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=11991

3 点击VisualVM的Add JMX Connection菜单项,输入IP/主机名与上面规定的端口号,切换到MBeans标签页,就可以看到度量信息了。

不过,一个节点上有可能会同时运行多个Executor。如果固定端口号的话,就只能观察到一个Executor的度量数据。因此更好的方法是将Executor对应的JMX端口号设为0,然后通过ps和netstat命令找到Executor的对应端口并连接之。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据真好玩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • jstatd方式
  • JMX方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档