前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据基础系列之spark的监控体系介绍

大数据基础系列之spark的监控体系介绍

作者头像
Spark学习技巧
发布2018-01-30 18:36:51
2.3K0
发布2018-01-30 18:36:51
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

目前有好几种监控spark应用程序的工具:web UIs,指标系统和外部监控仪。

一,web界面

1,界面的基本介绍

每一个Spark应用程序都会启动一个spark ui,默认端口是4040端口,用于展示对应用程序有用的信息。包括以下信息:

1),stages和tasks列表。

2),RDD大小的总概和内存使用。

3),运行环境信息。

4),运行的Executors状态。

你可以在浏览器输入: http://<driver-node>:4040访问该界面。如果多个SparkContexts在同一台主机上运行,则它们将以4040(4041,4042等)开始绑定到连续的端口。请注意,默认情况下,这些信息只会在程序运行期间可以查看。在程序运行结束后查看webUI,需要在启动应用程序前设置spark.eventLog.enabled为true。这配置spark会将显示在web ui上的spark events存储到存储系统中去。

2,spark的historyServer

只要应用程序的事件日志存在,仍然可以通过Spark的历史记录服务器构建应用程序的UI。通过执行下面的命令,启动历史服务器:

./sbin/start-history-server.sh

默认情况下,这将在http:// <server-url>:18080创建一个Web界面,列出未完成和已完成的应用程序和尝试。当使用文件系统提供程序类(请参见下面的spark.history.provider)时,基本日志记录目录必须在spark.history.fs.logDirectory配置选项中提供,并且应包含每个表示应用程序事件日志的子目录。必须将Spark作业本身配置为记录事件,并将其记录到相同的共享可写目录。例如,server的log目录为:hdfs://namenode/shared/spark-logs,那么客户端的配置如下:

spark.eventLog.enabled true

spark.eventLog.dir hdfs://namenode/shared/spark-logs

3,historyServer的配置

1),环境变量

环境变量名

默认值

含义

SPARK_DAEMON_MEMORY

1g

historyServer默认内存

SPARK_DAEMON_JAVA_OPTS

none

historyServer的JVM参数

SPARK_PUBLIC_DNS

none

历史服务器的公共地址。如果没有设置,那么到应用程序历史记录的链接可能会使用服务器的内部地址,导致链接断开

SPARK_HISTORY_OPTS

none

historyServer的spark.history.* 配置项

2),spark的配置选项

属性名

默认值

含义

spark.history.provider

org.apache.spark.deploy.history.FsHistoryProvider

历史服务器的实现类。目前仅仅只有当前一个实现,spark默认自带的,会从系统文件中查找程序日志

spark.history.fs.logDirectory

file:/tmp/spark-events

应用日志存储的位置,可以是本地文件或者hdfs,file://path或者hdfs://namenode/shared/path

spark.history.fs.update.interval

10s

Provider扫描日志目录,查看有误新的或者更新的日志信息的周期

spark.history.retainedApplications

50

在缓存中保留UI数据的应用程序数量。 如果超出此上限,则最早的应用程序将从缓存中删除。 如果应用程序不在缓存中,则如果应用程序从UI访问,则必须从磁盘加载该应用程序。

spark.history.ui.maxApplications

Int.MaxValue

在历史页面展示的最大应用程序的数目。即使没有在页面展示也照样可以通过他们的URLs访问。

spark.history.ui.port

18080

历史服务器端口。

这里只配置了常用的,还有更多配置请参考官网。

http://spark.apache.org/docs/latest/monitoring.html

通过页面我们很容易发现慢任务和数据倾斜。

注释:

1),historyserver会展示完成的任务和未完成的任务。如果一个任务失败之后重试了很多次,失败尝试会展示,正在运行的未完成的尝试,最终成功的尝试都会展示。

2),不完整的应用程序仅间歇更新。更新之间的时间由更改文件的检查间隔(spark.history.fs.update.interval)定义。在较大的集群上,更新间隔可能设置为较大的值。查看正在运行的应用程序的方式实际上是查看应用自己的Web UI。

二,监控指标

Spark具有基于Dropwizard Metrics Library的可配置度量系统。这允许用户将Spark指标报告给各种sinks,包括HTTP,JMX和CSV文件。度量系统是通过配置文件进行配置的,Spark度量系统的配置文件为$ SPARK_HOME / conf / metrics.properties。可以通过spark.metrics.conf配置属性指定自定义文件位置。默认情况下,用于驱动程序或执行程序度量标准的根命名空间是spark.app.id的值。然而,通常,用户希望能够跟踪spark程序的driver和Executor的指标,这与应用程序ID(即spark.app.id)很难相关,因为每次启动应用程序程序ID都会发生变化。这对这种情况,一个自定义namespace必须被指定,可以使用 spark.metrics.namespace设置为${spark.app.name}。然后该值会被spark展开作为root namespace。非driver和Executor度量指标不会以spark.app.id为前缀,spark.metrics.namespace属性也不会对此度量指标有任何影响。

Spark的度量指标被分解为与Spark组件相对应的不同实例。每一个实例都可以配置多个sinks,作为指标的输出地。下面的实例是当前所支持的:

1),master:Standalone模式下的master进程。

2),applications:master内的一个组件,用于报告各种应用程序。

3),worker:Standalone模式下的worker进程。

4),executor:spark的Executor。

5),driver:spark的diver进程。

6),shuffleService:Spark的shuffle服务。

每个实例能够输出到0个到多个sinks。Sinks包括在org.apache.spark.metrics.sink

1),ConsoleSink:将指标信息记录到控制台。

2),CSVSink:定期将度量数据导出到CSV文件。

3),JmxSink:注册指标到JMX控制台中查看的。

4),MetricsServlet:在现有的Spark UI中添加一个servlet,将度量指标以json的格式提供。

5),GraphiteSink:将指标追加到Graphite节点。

6),Slf4jSink:将度量标准作为日志条目发送到slf4j。

Spark还支持由于许可限制而不包含在默认构建中的Ganglia接收器

7),GangliaSink:向Ganglia节点或多播组发送指标。

要安装GangliaSink,您需要自定义编译spark。请注意,通过嵌入此库,您将在Spark包中包含LGPL许可的代码。对于sbt用户,在编译之前设置SPARK_GANGLIA_LGPL环境变量。对于Maven用户,启用-Pspark-ganglia-lgpl配置文件。除了修改集群的Spark构建用户应用程序,还需要链接到spark-ganglia-lgpl工件。度量系统的配置语法在示例配置文件$ SPARK_HOME / conf / metrics.properties.template中定义。

三,高级监控

可以使用多个外部工具来帮助描述Spark作业的性能:

1,集群的监控工具,如Ganglia,可以提供整体集群利用率和资源瓶颈的分析数据和视图。例如,Ganglia仪表板可以快速显示特定工作负载是否为磁盘瓶颈,网络瓶颈或CPU瓶颈。

2,操作系统分析工具(如dstat,iostat和iotop)可以在单个节点上提供细粒度的分析。

3,用于提供堆栈跟踪的JVM实用程序jstack ,用于创建堆视图的jmap,用于报告时间序列统计信息的jstat以及用于可视化浏览各种JVM属性的jconsole对于那些对JVM内部使用而言非常有用。

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

本文分享自 浪尖聊大数据 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档