Spark监控官方文档学习笔记

任务的监控和使用

有几种方式监控spark应用:Web UI,指标和外部方法

Web接口

每个SparkContext都会启动一个web UI,默认是4040端口,用来展示一些信息:

  1. 一系列调度的stage和task
  2. RDD大小和内存的使用概况
  3. 环境变量信息
  4. excutors的相关信息

可以通过http://<driver-node>:4040访问,如果有多个sparkcontext运行在同一个节点,那么端口会依次为4040、4041、4042。

注意这些信息只有在应用执行期间才能看到。如果想要执行完毕查看,那么可以在应用开始前设置spark.eventLog.enabledtrue,这样spark的日志信息会被持久化。

在应用执行结束后查看web UI

当应用执行完毕,可以在Spark History Server上查看日志。可以通过下面的命令启动history server:

./start-history-server.sh

这样默认访问http://<server-url>:18080即可。

如果使用文件系统的provider class(比如spark.history.provider),需要配置spark.history.fs.logDirectory选项。

spark的jobs本身需要配置日志,并且输出到相同的共享、可写目录。比如,下面就把日志输出到hdfs://namenode/shared/spark-logs,client需要增加配置:

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

环境变量

变量

说明

SPARK_DAEMON_MEMORY

history server分配的内存

SPARK_DAEMON_JAVA_OPTS

JVM选项

SPARK_PUBLIC_DNS

对外的地址,如果没有设置应该是用回环地址,这块没怎么看明白

SPARK_HISTORY_OPTS

history server的配置

配置

变量名

默认值

说明

spark.history.provider

org.apache.spark.deploy.history.FsHistoryProvider

history背后的实现类,目前spark就提供这一种,是基于文件系统的

spark.history.fs.logDirectory

file:/tmp/spark-events

支持file://或者hdfs://

spark.history.fs.update.interval

10s

这个是服务器刷新的时间,只有服务器这边刷新了,webUI那边才有反应

spark.history.retainedApplications

50

缓存的应用个数,如果超过限制,会从磁盘加载

spark.history.ui.maxApplications

Int.MaxValue

概况首页可以显示的应用数量

spark.history.ui.piort

18080

端口号

spark.history.kerberos.enabled

false

是否使用kerberos登陆

spark.history.kerberos.principal

kerberos不了解

spark.history.kerberos.keytab

kerberos不了解

spark.history.ui.acls.enable

false

acl校验

spark.history.ui.admin.acls

empty

可以查看history server的用户,*代表所有用户

spark.history.fs.cleaner.enabled

false

是否周期性的清除日志

spark.history.fs.cleaner.interval

1d

多长时间检查一次,应用日志是否清除

spark.history.fs.cleaner.maxAge

7d

超过这个时间的日志会被清除掉

spark.history.fs.numReplayThreads

25% of available cores

history server可以用的处理日志的线程数

注意在概况首页,所有的列都可以点击用来排序。

  1. history server可以同时展示完成或者未完成的spark任务。如果应用在失败后有多次尝试,失败的记录也会展示出来。
  2. 未完成的应用需要等待服务器内部刷新。刷新的时间可以通过spark.history.fs.update.interval。如果集群很大,那么刷新时间应该长一点,如果想看实时的数据,可以通过web UI查看
  3. application如果中途直接退出,那么会被标注为未完成。
  4. 想要标记spark为完成状态,需要sc.stop()方法执行

Rest API

另外可以通过UI查看指标。这样可以让开发者很容易的创建一些可视化的工具。这些命令同时也只支持正在运行的应用。对于history server,访问的地址是http://<server-url>:18080/api/v1,对于正在运行的任务,可以访问http://localhost:4040/api/v1

在这些api中,应用的标识为ID[app-id]。当通过YARN启动时,每个应用可能会有多次尝试,只有在cluster模式下才有 应用尝试的id,client模式是没有的。如果是集群模式,那么app-id其实是[base-app-id]/[attempt-id],其中base-app-id是yarn的appid。

?status=[active|complete|pending|failed] 可以列出对应的状态

url

说明

/applications

列出所有的应用。?status=[complete|running]选择对应的状态展示?minDate=[date]显示最小日期的应用,?maxDate=[date]``minEndDate=[date]``?maxEndDate=[date]``?limit=[limit]

/applications/[app-id]/jobs

展示对应的jobs

/applications/[app-id]/jobs/[job-id]

job信息

/applications/[app-id]/stages

stages信息

/applications/[app-id]/executors

excutors信息

/applications/[app-id]/streaming/statistics

streaming信息

其他工具

其他相关的性能调优的工具:

  1. 集群监控,可以使用Ganglia
  2. 操作系统监控,可以用dstat, iostat, iotop
  3. JVM可以用jstack, jstat, jconsole

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

hadoop: hive 1.2.0 在mac机上的安装与配置

环境:mac OS X Yosemite + hadoop 2.6.0 + hive 1.2.0 + jdk 1.7.0_79 前提:hadoop必须先安装,且...

34180
来自专栏运维

Codis安装部署全架构

Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 ...

18120
来自专栏openshift持续集成

jenkins邮件插件中的内容参数设置

众所周知,Jenkins默认提供了一个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容、无法定...

1.1K80
来自专栏白驹过隙

Socket编程回顾,一个最简单服务器程序

23830
来自专栏源码之家

一键安装桌面及VNC

65460
来自专栏北京马哥教育

你所不知道的linux匿名管道知识

豌豆贴心提醒,本文阅读时间5分钟 相信很多在linux平台工作的童鞋, 都很熟悉管道符 '|', 通过它, 我们能够很灵活的将几种不同的命令协同起来完成一件任...

33150
来自专栏前端萌媛的成长之路

一波webpack

21640
来自专栏Hadoop实操

2.如何在RedHat7中实现OpenLDAP集成SSH登录并使用sssd同步用户

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

3.9K90
来自专栏Java编程技术

Druid连接池原理学习

(1)、 如果设置了maxWait或者构造函数参数传入的为true,则创建的ReentrantLock为公平锁,否者为非公平锁 (2)、 如果设置了initi...

2.5K20
来自专栏xingoo, 一个梦想做发明家的程序员

手把手教你搭建Hive Web环境

了解Hive的都知道Hive有三种使用方式——CLI命令行,HWI(hie web interface)浏览器 以及 Thrift客户端连接方式。 为了体...

26190

扫码关注云+社区

领取腾讯云代金券