欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop
  1. 文章总数:978
  2. 浏览总数:11,981,824
  3. 评论:3939
  4. 分类目录:106 个
  5. 注册用户数:6130
  6. 最后更新:2018年12月15日
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
iteblog_hadoop
大数据技术博客公众号bigdata_ai
大数据猿:
bigdata_ai

Spark Metrics配置详解

和Hadoop类似,在Spark中也存在很多的Metrics配置相关的参数,它是基于Coda Hale Metrics Library的可配置Metrics系统,我们可以通过配置文件进行配置,通过Spark的Metrics系统,我们可以把Spark Metrics的信息报告到各种各样的Sink,比如HTTP、JMX以及CSV文件。

Spark的Metrics系统目前支持以下的实例:

  • master:Spark standalone模式的master进程;
  • worker:Spark standalone模式的worker进程;
  • executor:Spark executor;
  • driver:Spark driver进程;
  • applications:master进程里的一个组件,为各种应用作汇报。

在Spark的Metrics系统主要支持Sink和Source两种,其中,Sink指定metrics信息发送到哪里,每个instance可以设置一个或多个Sink(这点和Flume很类似)。Sink的源码位于org.apache.spark.metrics.sink包中;而Source也是指信息的来源,它主要分为两大类:

  • Spark内部source,比如MasterSource、WorkerSource等,它们会接收Spark组件的内部状态;
  • 通用source,如:JvmSource,它收集低级别的状态。

支持的Sink类别

ConsoleSink

ConsoleSink是记录Metrics信息到Console中。

名称默认值描述
classorg.apache.spark.metrics.sink.ConsoleSinkSink类
period10轮询间隔
unitseconds轮询间隔的单位

CSVSink

定期的把Metrics信息导出到CSV文件中。

名称默认值描述
classorg.apache.spark.metrics.sink.CsvSinkSink类
period10轮询间隔
unitseconds轮询间隔的单位
directory/tmpCSV文件存储的位置

JmxSink

可以通过JMX方式访问Mertics信息

名称默认值描述
classorg.apache.spark.metrics.sink.JmxSinkSink类

MetricsServlet

名称默认值描述
classorg.apache.spark.metrics.sink.MetricsServletSink类
pathVARIES*Path prefix from the web server root
samplefalseWhether to show entire set of samples for histograms ('false' or 'true') |

这个在Spark中默认就开启了,我们可以在4040端口页面的URL后面加上/metrics/json查看

GraphiteSink

名称默认值描述
classorg.apache.spark.metrics.sink.GraphiteSinkSink类
hostNONEGraphite服务器主机名
portNONEGraphite服务器端口
period10轮询间隔
unitseconds轮询间隔的单位
prefixEMPTY STRINGPrefix to prepend to metric name

GangliaSink

由于Licene的限制,默认没有放到默认的build里面,如果需要使用,需要自己编译(这个会在后面专门介绍)

名称默认值描述
classorg.apache.spark.metrics.sink.GangliaSinkSink类
hostNONEGanglia 服务器的主机名或multicast group
portNONEGanglia服务器的端口
period10轮询间隔
unitseconds轮询间隔的单位
ttl1TTL of messages sent by Ganglia
modemulticastGanglia网络模式('unicast' or 'multicast')

如何使用

在Spark安装包的$SPARK_HOME/conf路径下有个metrics.properties文件(如果不存在,请将metrics.properties.template重命名为metrics.properties即可),Spark启动的时候会自动加载它。

当然,如果想修改配置文件位置,我们可以使用-Dspark.metrics.conf=xxx进行修改。

实例

下面我将简单地介绍如何使用Spark Metrics。我只想简单地开启ConsoleSink,我们可以如下配置:

# User: 过往记忆
# Date: 2015-05-05
# Time: 上午01:16
# bolg: https://www.iteblog.com
# 本文地址:https://www.iteblog.com/archives/1341
# 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
# 过往记忆博客微信公共帐号:iteblog_hadoop

*.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink
*.sink.console.period=10
*.sink.console.unit=seconds

period是ConsoleSink的轮询周期,unit是ConsoleSink的轮询周期时间单位。上面是配置所有的实例,如果想单独配置可以如下:

master.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink
master.sink.console.period=15
master.sink.console.unit=seconds

这个配置可以覆盖通用配置符(也就是上面的*号)

我们为master、worker、driver和executor开启jvm source,如下:

# User: 过往记忆
# Date: 2015-05-05
# Time: 上午01:16
# bolg: https://www.iteblog.com
# 本文地址:https://www.iteblog.com/archives/1341
# 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
# 过往记忆博客微信公共帐号:iteblog_hadoop

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

当然,我们还可以自定义Source,这个需要继承自 org.apache.spark.metrics.source.Source 类。关于如何自定义Source,我这里不介绍了,需要的同学可以去参照Spark源码,比如 JvmSource 类的实现。

本博客文章除特别声明,全部都是原创!
转载本文请加上:转载自过往记忆(https://www.iteblog.com/)
本文链接: 【Spark Metrics配置详解】(https://www.iteblog.com/archives/1341.html)
喜欢 (11)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!