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

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

作者头像
Spark学习技巧
发布于 2018-01-30 10:36:51
发布于 2018-01-30 10:36:51
2.6K0
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spark监控官方文档学习笔记
任务的监控和使用 有几种方式监控spark应用:Web UI,指标和外部方法 Web接口 每个SparkContext都会启动一个web UI,默认是4040端口,用来展示一些信息: 一系列调度的stage和task RDD大小和内存的使用概况 环境变量信息 excutors的相关信息 可以通过http://<driver-node>:4040访问,如果有多个sparkcontext运行在同一个节点,那么端口会依次为4040、4041、4042。 注意这些信息只有在应用执行期间才能看到。如果想要执行完
用户1154259
2018/01/17
1.9K0
Spark快速入门系列(5) | Spark环境搭建—standalone(2) 配置历史日志服务器
默认情况下,Spark程序运行完毕关闭窗口之后,就无法再查看运行记录的Web UI(4040)了,但通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程。本篇博客,博主就为大家带来在Spark上配JobHistoryServer的详细过程。 在 Spark-shell 没有退出之前, 我们是可以看到正在执行的任务的日志情况:http://hadoop102:4040. 但是退出 Spark-shell 之后, 执行的所有任务记录全部丢失. 所以需要配置任务的历史服务器, 方便在任何需要的时候去查看日志.
不温卜火
2020/10/28
1.3K0
Spark快速入门系列(5) | Spark环境搭建—standalone(2) 配置历史日志服务器
【Spark篇】---Spark中Master-HA和historyServer的搭建和应用
                Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可用配置,Master的高可用可以使用fileSystem(文件系统)和zookeeper(分布式协调服务)。
LhWorld哥陪你聊算法
2018/09/13
1.2K0
【Spark篇】---Spark中Master-HA和historyServer的搭建和应用
教你如何轻松配置Spark的历史日志服务器JobHistoryServer?
默认情况下,Spark程序运行完毕关闭窗口之后,就无法再查看运行记录的Web UI(4040)了,但通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程。本篇博客,博主就为大家带来在Spark上配置JobHistoryServer的详细过程。
大数据梦想家
2021/01/27
2.3K1
教你如何轻松配置Spark的历史日志服务器JobHistoryServer?
Spark History Server自动删除日志文件
公司的计算平台上,写入spark-history目录日志文件数超过设定阈值(1048576),导致任务失败。
sparkle123
2021/01/04
2.9K0
Spark History Server自动删除日志文件
Spark History Server配置
该文件在SPARK_HOME/conf/下,新安装的spark中只有spark-defaults.conf.template这个文件,改名为spark-defaults.conf即可
CoderJed
2018/09/13
1.1K0
Spark History Server配置
查看Spark任务的详细信息
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程序员欣宸
2019/10/22
2.9K0
查看Spark任务的详细信息
Spark介绍系列02--安装集群
 Apache Mesos  - 一个通用的集群管理器,也可以运行Hadoop MapReduce和服务应用程序。
Dlimeng
2023/06/29
1520
Spark介绍系列02--安装集群
Spark简介
2)文档查看地址:https://spark.apache.org/docs/3.1.3/
ha_lydms
2023/10/23
2630
Spark简介
进击大数据系列(八)Hadoop 通用计算引擎 Spark
Spark 是一种通用的大数据计算框架,是基于RDD(弹性分布式数据集)的一种计算模型。那到底是什么呢?可能很多人还不是太理解,通俗讲就是可以分布式处理大量集数据的,将大量集数据先拆分,分别进行计算,然后再将计算后的结果进行合并。
民工哥
2023/08/22
5120
进击大数据系列(八)Hadoop 通用计算引擎 Spark
在Hadoop YARN群集之上安装,配置和运行Spark
Spark是一种通用的集群计算系统。它可以在从单个节点到数千个分布式节点的集群上部署和运行并行应用程序。Spark最初设计用于运行Scala应用程序,但也支持Java,Python和R.
Techeek
2018/09/19
3.8K0
在Hadoop YARN群集之上安装,配置和运行Spark
第一天:spark基础
Hadoop 的概念可追溯到 2003,2004 Google2篇论文(老版三辆马车),2011年发布1.0版本,2012年发布稳定版。Hadoop 在2.0版本之前组件主要是 HDFS跟MapReduce。
sowhat1412
2020/11/05
7200
第一天:spark基础
基于Docker搭建大数据集群(四)Spark部署
docker cp spark-2.4.4-bin-hadoop2.7.tar.gz cluster-master:/root/tar
程序员朱永胜
2023/08/17
5531
大数据技术之_19_Spark学习_01_Spark 基础解析小结(无图片)
2、Spark Standalone 即独立模式   2.1、解压安装包到你安装的目录。   2.2、拷贝 conf 目录下的 slaves 文件,将 slave 节点的 hostname 写在文件中,每行一个。   2.3、拷贝 conf 目录下的 spark-env.sh 文件,将 SPARK_MASTER_HOST 和 SPARK_MASTER_PORT 指定。   2.4、分发你的 spark 安装目录到其他节点。   2.5、在 master 节点上执行 /opt/module/spark-2.1.1-bin-hadoop2.7/sbin/start-all.sh 来启动整个 spark 集群。   2.6、在浏览器中访问 http://hadoop102:8080 来访问你的 spark 集群 注意:如果在启动的时候出现 JAVA_HOME not set 那么可以在 sbin 目录下的 spark-config.sh 文件中输入 export JAVA_HOME=/opt/module/jdk1.8.0_144 然后分发到其他节点,这样问题即可解决。
黑泽君
2019/05/07
7120
基于Yarn的Spark环境,统计哈姆雷特词频(1)
说明:本地的hadoop目录会挂载到docker中hadoop/etc/hadoop配置文件目录。
birdskyws
2018/09/12
6260
基于Yarn的Spark环境,统计哈姆雷特词频(1)
2021年大数据Spark(十):环境搭建集群模式 Spark on YARN
Spark运行在YARN上是有2个模式的, 1个叫 Client模式 一个叫Cluster模式
Lansonli
2021/10/09
4.2K1
分享一下Spark History Server搭建以及使用s3路径的eventlog的坑
完成了spark on k8s的部署和测试,现在需要一个能够查看spark任务执行情况的ui,原先采用yarn资源管理器ui链接到spark-web-ui,由于yarn集群下的机器ip固定,可以通过配置本地代理的方式访问它,现在去掉了yarn,自己需要搭建一个能够查看所有spark任务执行情况的页面。直接使用spark-web-ui不方便管理且部署的driver机器在线上且ip不固定,无法通过配置代理和服务名方式打通。
框框不是欢欢
2022/06/07
1.6K0
大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
  Spark 是一种快速、通用、可扩展的大数据分析引擎,2009 年诞生于加州大学伯克利分校 AMPLab,2010 年开源,2013 年 6 月成为 Apache 孵化项目,2014 年 2 月成为 Apache 顶级项目。项目是用 Scala 进行编写。   目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含 SparkSQL、Spark Streaming、GraphX、MLib、SparkR 等子项目,Spark 是基于内存计算的大数据并行计算框架。除了扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark 使我们可以简单而低耗地把各种处理流程整合在一起。而这样的组合,在实际的数据分析过程中是很有意义的。不仅如此,Spark 的这种特性还大大减轻了原先需要对各种平台分别管理的负担。   大一统的软件栈,各个组件关系密切并且可以相互调用,这种设计有几个好处:   1、软件栈中所有的程序库和高级组件都可以从下层的改进中获益。   2、运行整个软件栈的代价变小了。不需要运行 5 到 10 套独立的软件系统了,一个机构只需要运行一套软件系统即可。系统的部署、维护、测试、支持等大大缩减。   3、能够构建出无缝整合不同处理模型的应用。   Spark 的内置项目如下:
黑泽君
2019/05/07
1K0
大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
Spark 系列教程(2)运行模式介绍
Apache Spark 是用于大规模数据处理的统一分析引擎,它提供了 Java、Scala、Python 和 R 语言的高级 API,以及一个支持通用的执行图计算的优化引擎。
Se7en258
2021/10/09
1.6K0
Spark 系列教程(2)运行模式介绍
Spark on yarn
spark on yarn是spark集群模式之一,通过resourcemanager进行调度,较之standalone模式,不需要单独启动spark服务。
阿dai学长
2020/03/09
1.6K0
Spark on yarn
推荐阅读
相关推荐
Spark监控官方文档学习笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档