Spark监控

监控和测量

有几种方法可以监控Spark应用程序:web ui, metrics(度量),和外部设备。

网络接口

每一个SparkContext启动一个web UI,默认情况下在端口4040, 显示关于应用程序的有用信息,包括:

·         调度器阶段和任务的列表

·         RDD大小和内存使用的概览

·         环境信息。

·         关于运行中执行器的信息

web浏览器打开 http:// < driver-node >:4040就可以访问该接口。如果在同一个主机上运行多个SparkContexts,4040开始递增绑定端口 (40414042、等)

请注意,默认情况下,这些信息仅适用于应用程序的生命周期。要想在应用程序完成之后查看web UI,在应用程序启动之前,spark.eventLog.enabled必须设置为true。这样Spark会将Spark事件编码显示信息持久化存储。

完成后查看

Spark的集群管理器也有自己的独立模式 web UI 。如果应用程序已将其生命周期内的事件信息记录进日志中,那么在应用程序完成后,独立主机的web UI将自动重新呈现应用程序的UI

如果Spark运行在Mesos或者Yarn, 通过Spark的历史服务器仍然可以重建完成的应用程序的UI,只要历史服务器存有应用程序事件日志。可以执行下面的命令启动历史服务器:

./sbin/start-history-server.sh

当使用文件系统提供者类(参见下面的spark.history.provider), 配置选项spark.history.fs.logDirectory基本日志记录目录必须提供,而且应该包含子目录,每个子目录对应一个应用程序的事件日志。默认情况下这将在 http:// <服务器url >:18080创建一个web界面。历史服务器可以配置 如下:

环境变量

意义

SPARK_DAEMON_MEMORY

分配给历史服务器的内存(默认值:512m)

SPARK_DAEMON_JAVA_OPTS

历史服务器JVM选项(默认值:none)

SPARK_PUBLIC_DNS

历史服务器的公共地址。如果没有设置,应用程序历史的的链接可能会使用服务器的内部地址,

这可能导致失效链接(默认值:)

SPARK_HISTORY_OPTS

spark.history.* 历史服务器的配置选项(默认值:none)

 

属性名

默认值

意义

spark.history.provider

org.apache.spark.deploy.history.FsHistoryProvider

实现应用程序历史后端类名。目前Spark只提供一种实现,用于查找存储在文件系统的应用程序日志。

spark.history.fs.logDirectory

file:/tmp/spark-events

历史服务器加载的包含应用程序事件日志的目录

spark.history.fs.updateInterval

10

历史服务器显示的信息更新时间间隔,以秒为单位的.每次更新将检查事件日志在持久化存储上的任何更改。

spark.history.retainedApplications

50

应用程序ui保留的数量。如果超过这个上限,然后最古老的应用程序记录将被删除。

spark.history.ui.port

18080

历史服务器web界面的绑定端口

spark.history.kerberos.enabled

false

指示历史服务器是否应该使用kerberos登录。如果历史服务器访问的是一个安全的Hadoop集群HDFS文件, 这是有用的。如果设置为true,它将使用spark.history.kerberos.principal spark.history.kerberos.keytab 

spark.history.kerberos.principal

(none)

历史服务器的Kerberos主体名称。

spark.history.kerberos.keytab

(none)

历史服务器的kerberos keytab文件的位置。

spark.history.ui.acls.enable

false

指定是否应该检查查看应用程序的acl授权用户。 如果设置为启用, 当应用程序运行时,无论应用程序是否设置 spark.ui.acls.enable, 都将启用访问控制检查。应用程序所有者总是会有授权查看自己的应用程序,通过spark.ui.view.acls指定授权的用户也可以查看该应用程序。 如果禁用,没有访问控制检查。

请注意,所有的这些ui,,都可以通过点击表头进行排序,以方便识别任务,数据等。

注意,历史服务器只显示已经完成的Spark Job 要想使Spark Job提前完成, 使Spark上下文(Spark Context) 停止执行sc.stop()),或者在Python中使用 SparkContext() as sc: 处理Spark上下文建立和拆除,也会在UI上显示job历史信息。

指标Metrics

Spark自带一个基于Coda Hale指标库 的可配置的指标系统。允许用户使用各式各样的sinks输出Spark指标,包括HTTPJMXCSV 文件。指标系统通过$SPARK_HOME/conf/metrics.properties配置文件进行配置。也可以通过指定spark.metrics.conf配置属性自定义文件的位置。 关于Spark指标,不同的Spark组件是对应不同的指标实例 。在每个实例中,可以配置一系列的报告指标槽sink 下面是目前支持的实例:

·         master: Spark独立的主进程。

·         applications: 在主程序上的一个组件,对应各种应用程序报告。

·         worker:一个Spark独立的工作进程。

·         executor一个Spark执行器。

·         driver Spark驱动程序进程(创建SparkContext的进程)

每个实例的报告可以有零个或更多的sinks 。自带的 Sinks 存在于 org.apache.spark.metrics.sink :

·         ConsoleSink :将指标信息输出到控制台。

·         CSVSink :定期使用CSV文件导出数据。

·         JmxSink :将指标输出到JMX控制台。

·         MetricsServlet :在现有的SparkUI内添加一个servlet,JSON格式提供指标数据。

·         GraphiteSink :将指标发送到Graphite节点。

Spark也支持Ganglia sink,但由于许可限制的原因并不包含在默认的构建中:

·         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 Job的性能:

·         整个集群范围的监视工具, Ganglia ,可以提供集群的总体利用率和资源瓶颈。 例如,一个Ganglia指示板可以很快发现一个特定的工作负载是否磁盘绑定,网络绑定,或者 CPU绑定。

·         操作系统分析工具如 dstat iostat iotop 等可以提供单个节点细粒度的分析。

·         JVM 实用工具如jstack 可以提供栈跟踪信息jmap 可以生成堆dump, jstat报告分时统计以及jconsole等对于JVM内部结构分析都是非常有用的.

 


转载于:https://my.oschina.net/newlife111/blog/419463

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值