Spark监控官方文档学习笔记
任务的监控和使用
有几种方式监控spark应用:Web UI,指标和外部方法
Web接口
每个SparkContext都会启动一个web UI,默认是4040端口,用来展示一些信息:
- 一系列调度的stage和task
- RDD大小和内存的使用概况
- 环境变量信息
- excutors的相关信息
可以通过http://<driver-node>:4040访问,如果有多个sparkcontext运行在同一个节点,那么端口会依次为4040、4041、4042。
注意这些信息只有在应用执行期间才能看到。如果想要执行完毕查看,那么可以在应用开始前设置spark.eventLog.enabled为true,这样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可以用的处理日志的线程数 |
注意在概况首页,所有的列都可以点击用来排序。
- history server可以同时展示完成或者未完成的spark任务。如果应用在失败后有多次尝试,失败的记录也会展示出来。
- 未完成的应用需要等待服务器内部刷新。刷新的时间可以通过
spark.history.fs.update.interval。如果集群很大,那么刷新时间应该长一点,如果想看实时的数据,可以通过web UI查看 - application如果中途直接退出,那么会被标注为未完成。
- 想要标记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信息 |
其他工具
其他相关的性能调优的工具:
- 集群监控,可以使用Ganglia
- 操作系统监控,可以用dstat, iostat, iotop
- JVM可以用jstack, jstat, jconsole
Spark监控官方文档学习笔记的更多相关文章
- Spark Streaming官方文档学习--上
官方文档地址:http://spark.apache.org/docs/latest/streaming-programming-guide.html Spark Streaming是spark ap ...
- pm2 官方文档 学习笔记
一.安装 1.安装 npm install pm2 -g 2.更新 npm install pm2 -g && pm2 update pm2 update 是为了刷新 PM2 的守护进 ...
- vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...
- Vue2.0 官方文档学习笔记
VUE2.0官方文档 基础部分: 1.VUE简介 Vue是一个基于MVVM的框架,其中M代表数据处理层,V代表视图层即我们在Vue组件中的html部分,VM即M和V的结合层,处理M层相应的逻辑数据,在 ...
- Spark Streaming官方文档学习--下
Accumulators and Broadcast Variables 这些不能从checkpoint重新恢复 如果想启动检查点的时候使用这两个变量,就需要创建这写变量的懒惰的singleton实例 ...
- Vue.js官方文档学习笔记(一)起步篇
Vue.js起步 Vue.js介绍 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库 ...
- Less 官方文档学习笔记
LESS 是css的一种扩展,它的编辑器是基于node.js 的less.js,将less文件编译成css文件(可压缩). 其中的概念: 变量:定义变量来代替某个值,只能编译一次,本质是“常量”.例如 ...
- Vue.js官方文档学习笔记(三)创建Vue实例
创建Vue实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm=new Vue({ //选项 }) Vue的设计受到了mvvm的启发 当创建一个 Vue 实 ...
- Vue.js官方文档学习笔记(二)组件化应用的构建
组件化应用的构建 组件化应用允许我们使用小型.独立和通常可复用的组件构建大型应用. Vue注册组件 Vue.component('todo-item',{template:'<li>这是个 ...
随机推荐
- C#Winform设计的通用标签设计器
技术看点 PropertyGrid的使用 自定义控件的使用 对象序列化成XML GDI+Windows驱动打印 前言 是的,一不小心把公司名称透露了.索性帮公司打一下广告.公司(上海易溯信息科技)是中 ...
- mysql 打开慢查询日志
打开mysql的配置文件 my.ini或是my.cnf找到节点[mysqld]下添加下面这两行(默认可能不带这两行,直接手敲即可) [AppleScript] 纯文本查看 复制代码 ? 1 2 3 ...
- NOIP2016提高组初赛(2)四、阅读程序写结果2、
#include <iostream> using namespace std; int main() { ][], b[][]; ]; string tmp; , j = , k = , ...
- 海尔U+的启发:让用户对智能家居拥有“话语权”
近年来,智能家居成了IT产业的重要话题,随着智能家电一系列产品的出现,智能家居最终開始从概念走向落地.只是,眼下智能家居行业有个非常突出的问题------因为缺乏开放的意识,不管是产品还是理念 ...
- 打印杨辉三角 --JS
var arr = new Array(); for(var i = 0 ;i < 6 ; i++){ if(i == 0){arr.push(1);} else if(i == 1){arr ...
- 《3》CentOS7.0+OpenStack+kvm云平台部署—配置Glance
感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- 蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)
关键词:蓝牙核心技术协议 irDA BNEP AVDTP AVCTP 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢! )欢迎指正错误,共同学习.共同进步!! 下载链接:Bl ...
- Java并发编程实践读书笔记(1)线程安全性和对象的共享
2.线程的安全性 2.1什么是线程安全 在多个线程访问的时候,程序还能"正确",那就是线程安全的. 无状态(可以理解为没有字段的类)的对象一定是线程安全的. 2.2 原子性 典型的 ...
- 大数据学习(5)MapReduce切片(Split)和分区(Partitioner)
MapReduce中,分片.分区.排序和分组(Group)的关系图: 分片大小 对于HDFS中存储的一个文件,要进行Map处理前,需要将它切分成多个块,才能分配给不同的MapTask去执行. 分片的数 ...
- Struts配置详解
一.Stuts的元素 1 web.xml 任何一个web应用程序都是基于请求响应模式进行构建的,所以无论采用哪种MVC框架,都离不开web.xml文件的配置.换句话说,web.xml并不是Struts ...