热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:利用VisualVM监控SparkDriver/Executor

篇首语:本文由编程笔记#小编为大家整理,主要介绍了利用VisualVM监控SparkDriver/Executor相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了利用VisualVM监控Spark Driver/Executor相关的知识,希望对你有一定的参考价值。


回复”资源“获取更多惊喜









大数据技术与架构


点击右侧关注,大数据开发领域最强公众号!



















大数据真好玩


点击右侧关注,大数据真好玩!












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


jstatd方式

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








grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};

2 后台启动jstatd进程






./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则不可以。

利用VisualVM监控Spark Driver/Executor


JMX方式

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










*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSinkmaster.source.jvm.class=org.apache.spark.metrics.source.JvmSourceworker.source.jvm.class=org.apache.spark.metrics.source.JvmSourcedriver.source.jvm.class=org.apache.spark.metrics.source.JvmSourceexecutor.source.jvm.class=org.apache.spark.metrics.source.JvmSource

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








spark.metrics.cOnf=/opt/cloudera/parcels/SPARK2/lib/spark2/conf/metrics.propertiesspark.driver.extraJavaOptiOns=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=11990spark.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标签页,就可以看到度量信息了。

利用VisualVM监控Spark Driver/Executor

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




















版权声明:



本文为《大数据真好玩》整理,原作者独家授权。未经原作者允许转载追究侵权责任。


编辑|冷眼丶


微信公众号|大数据真好玩







文章不错?点个【在看】吧! 

推荐阅读
author-avatar
蘑菇雪雪_585
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有