Spark程序监控

4040端口

可以在浏览器中打开http://:4040网址,网址显示的信息:
任务和调度状态的列表
RDD大小和内存使用的统计信息
正在运行的executor的信息
环境信息
如果在同一台机器上有多个SparkContext正在运行,那么他们的端口从4040开始依次增加(4041,4042等)。

Spark程序监控_第1张图片

在应用程序运行期间,你可以在这个Web页面获得Spark实时监控信息,如果希望在程序运行完以后查看这些信息,需要在应用程序开始之前把spark.eventlog.enabled属性设定为true,这样所有运行的信息就会被储存起来。

Metrics

Spark基于Coda Hale Metrics库提供一个可配置的统计系统。这允许用户向不同的终端发送统计信息,包括HTTP、JMX和CSV文件。统计系统可以通过配置文件来进行配置,Spark默认将配置文件保存在SPARKHOME/conf/mertics.conf。用户可以通过Javapropertyspark.metrics.conf来修改配置文件的保存路径。Spark根据组件的不同将统计信息分为多个实例。可以配置每一个实例向多个方向发送统计信息。目前支持下面几种实例:master:Spark管理进程applications:位于master的组件,统计发送各种应用的信息worker:Spark工作进程executor:执行器driver:Spark驱动程序每一个实例可以向多个渠道发送统计信息。渠道包含在包org.apache.spark.metrics.sink:ConsoleSink:将统计信息发送到控制台CSVSink:每隔一段时间将统计信息写入到CSV文件GangliaSink:将统计信息发送到Ganglia或者多播组JmxSink:将统计信息注册到JMX控制台MetricsServlet:在SparkUI中添加servlet用来以JSON的方式提供统计信息统计信息配置文件的语法有一个示例文件——SPARKHOME/conf/mertics.conf。用户可以通过Javapropertyspark.metrics.conf来修改配置文件的保存路径。Spark根据组件的不同将统计信息分为多个实例。可以配置每一个实例向多个方向发送统计信息。目前支持下面几种实例:master:Spark管理进程applications:位于master的组件,统计发送各种应用的信息worker:Spark工作进程executor:执行器driver:Spark驱动程序每一个实例可以向多个渠道发送统计信息。渠道包含在包org.apache.spark.metrics.sink:ConsoleSink:将统计信息发送到控制台CSVSink:每隔一段时间将统计信息写入到CSV文件GangliaSink:将统计信息发送到Ganglia或者多播组JmxSink:将统计信息注册到JMX控制台MetricsServlet:在SparkUI中添加servlet用来以JSON的方式提供统计信息统计信息配置文件的语法有一个示例文件——SPARK_HOME/conf/metrics.conf.template.

外部工具

有几个外部工具可用来衡量Spark作业的性能:

集群范围的监控工具,比如 Ganglia,可以洞察整个集群的利用率和资源瓶颈。例如,Ganglia仪表盘可以迅速揭示出某个特定载荷是磁盘相关,网络相关,还是CPU相关的。

OS性能分析工具,比如 dstat, iostat,和 iotop, 可以提供各个节点的细粒度的分析。

JVM工具,比如 jstack提供了堆栈跟踪,jmap提供了创建堆转储,jstat提供了时间序列统计报告,还有jconsole提供了各种JVM属性的视觉显示,它们对JVM内部构件的舒适运作都是非常有用的。

jvisualvm监控可以参考此网址:https://www.iteblog.com/archives/1349

历史数据

程序运行完之后,在standalone模式下是找不到运行时的日志的,如果想查看的话要配置

在spark-env.sh里下有一项
SPARK_HISTORY_OPTS
配置方式
SPARK_HISTORY_OPTS=“-Dspark-history.fs.logDirectory=hdfs://s1:8020/usr/soft/spark/log”
基本配置这个就可以了,默认保存路径是在/tmp/spark-events下,我们要修改成自己想要的。
端口是18080可以选择默认。

在spark-defaults.conf里
spark.eventLog.enabled true
spark.eventLog.dir hdfs://namenode:8021/directory
spark.eventLog.compress true
第一个参数是开启,第二个是保存目录,第三个是否压缩

然后就可以在启动了
$sbin/start-history-server.sh start

最后可以Web页面18080端口查看

注意这里显示的是已经完成的任务,如果程序没停止的话在页面是看不到的,即要有sc.stop()

总结

很多时候查看Web页面就可以了的,如果性能上有问题可以接着用Ganglia或jvisualvm查看。

你可能感兴趣的:(Spark程序监控)