Spark入门 - History Server配置使用
问题描述
在Spark安装成功后,无论是通过spark-submit工具还是通过Intellij IDEA提交任务,只要在Spark应用程序运行期间,都可以通过WebUI控制台页面来查看具体的运行细节,在浏览器中通过地址:http://<driver-node>:4040
即可查看当前的运行状态。但是一旦应用程序运行结束,该Web界面也就失效了,无法继续查看监控集群信息。无法回顾刚刚运行的程序细节,进而定向做出优化,肯定极为不便。
这时候就需要为集群配置Spark History Server了。
注:<driver-node>
可以是主机名,如master,也可以是主机名对应的IP。
Spark History Server
Spark History Server可以很好地解决上面的问题。
通过配置,我们可以在Spark应用程序运行完成后,将应用程序的运行信息写入知道目录,而Spark History Server可以将这些信息装在并以Web形式供用户浏览。
要使用Spark History Server,对于提交应用程序的客户端需要配置以下参数。
Spark History Server配置
下面以Standalone模式为例说明配置信息。更多扩展细节可以根据自己的需求在此基础上添加配置项。
1、首先配置$SPARK_HOME$/conf
目录下的spark-defaults.conf
文件。
默认spark-defaults.conf
是不存在的,我们可以根据Spark提供的template文件新建之。
root@master:/usr/local/spark/spark-1.6.2-bin-hadoop2.6/conf# mv spark-defaults.conf.template spark-defaults.conf root@master:/usr/local/spark/spark-1.6.2-bin-hadoop2.6/conf# vim spark-defaults.conf |
并修改文件内容为:
spark.eventLog.enabled true spark.eventLog.dir hdfs://master:9000/history spark.eventLog.compress true |
属性说明
(1) spark.eventLog.enabled。
是否记录Spark事件,用于应用程序在完成后的筹够WebUI。
(2) spark.eventLog.dir。
设置spark.eventLog.enabled为true后,该属性为记录spark时间的根目录。在此根目录中,Spark为每个应用程序创建分目录,并将应用程序的时间记录到此目录中。用户可以将此属性设置为HDFS目录,以便History Server读取。
(3) spark.eventLog.compress。
否压缩记录Spark事件,前提spark.eventLog.enabled为true,默认使用的是snappy。
2、在HDFS中建立存放目录。
上文已经设置好了存放History的目录HDFS文件目录,现在我们在HDFS中建立相应的目录专门存放文件。
root@master:~# hadoop dfs -mkdir /history |
之后的历史记录都会被存放到这里。
3、配置spark-env.sh
文件。
在之前的配置项后面
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9000/history" |
属性说明
(1) spark.history.ui.port
WebUI的端口号。默认为18080,也可以自行设置。
(2) spark.history.retainedApplications
设置缓存Cache中保存的应用程序历史记录的个数,默认50,如果超过这个值,旧的将被删除。
注:缓存文件数不表示实际显示的文件总数。只是表示不在缓存中的文件可能需要从硬盘读取,速度稍有差别。
(3) spark.history.fs.logDirectory
存放历史记录文件的目录。可以是Hadoop APIs支持的任意文件系统。
更多配置参考文章末尾的链接。
启动
依次启动Hadoop的start-dfs.sh
和Spark的start-all.sh
后,再运行start-history-server.sh
文件即可启动历史服务。
root@master:/usr/local/spark/spark-1.6.2-bin-hadoop2.6/sbin# ./start-history-server.sh |
如果提示文件目录无效,可以直接使用下面的命令指定目录:
root@master:/usr/local/spark/spark-1.6.2-bin-hadoop2.6/sbin# ./start-history-server.sh hdfs://master:9000/history |
启动后的效果如下(此时尚未运行程序,没有记录显示出来):
之后在每次应用程序运行结束后,就可以在这里观察刚刚程序的细节了。
小结
应用程序运行时的4040和历史记录的18080WebUI配合使用,可以让我们在运行Spark应用的时候随时监测程序运行状态,并作相应的优化和调节,效果显著。
小问题
不过其中也有一部分小细节尚未解决:如某次程序允许的时候用户选择自行中断,但历史记录中仍然存在该记录,而且最主要的是目前无法删除单项纪录。这就显得很繁琐了,如果需要对多项历史记录进行对比分析,就不得不先在很多的记录中筛选出哪些是有用记录,哪些是无用记录,费时费力。
虽然官方提供了如spark.history.fs.cleaner.interval
和spark.history.fs.cleaner.maxAge
配置项,但依然不能很好地解决这一问题。
期待后续有更好的解决方案出现。
Spark入门 - History Server配置使用相关推荐
- Spark History Server配置及其启动
Spark history Server产生背景 以standalone运行模式为例,在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息:但该WEB ...
- Spark: history Server
1.Spark history Server产生背景 以standalone运行模式为例,在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息:但该W ...
- 【网址收藏】Spark History Server配置及使用
https://blog.csdn.net/xiligey1/article/details/82457302
- YARN, MR History Server和Spark History Server
转载来自:http://blog.csdn.net/cymvp/article/details/52090348 YARN, MR History Server和Spark History Serve ...
- spark history server内存不足服务自动挂掉
版本:Spark 1.5.2 built for Hadoop 2.4.0 今天spark的history server自己挂掉了,查看日志: 16/05/13 14:12:30 WARN DFSCl ...
- spark on yarn 配置history server
spark在yarn模式下配置history server 1.建立hdfs文件 – hadoop fs -mkdir /user/spark – hadoop fs -mkdir /user/spa ...
- Spark History Server和Event Log详解
前言 Spark如何持久化event SHS启动参数 SHS工作流程 DiskCache 读取eventlog 参考 前言 这篇文章会overall的介绍一下Spark History Server和 ...
- Spark history server 启动报错:History server ui acls disabled; users with admin permissions
报错原因:hadoop没启动 在启动前,需要先启动 hadoop 和 zookeeper 报错信息: FsHistoryProvider:54 - History server ui acls dis ...
- Spark入门阶段一之扫盲笔记
介绍 spark是分布式并行数据处理框架 与mapreduce的区别: mapreduce通常将中间结果放在hdfs上,spark是基于内存并行大数据框架,中间结果放在内存,对于迭代数据spark效率 ...
最新文章
- AI一眼识别这是什么鸟 “我们来找茬”十级选手诞生
- 设计模式----单件模式(c++)
- 自制清理电脑里的垃圾软件
- rails 常用方法
- java 日期是否合法_java 中 Date 类型快判断日期是否合法.
- python字符串的方法和列表的方法_Python学习笔记字符串操作之join()和split()方法,列表转字符串,字符串转列表...
- jqgrid下treegrid排序问题
- javascript进制转换_《算法笔记》3.5小节——入门模拟-gt;进制转换
- Plugin ‘scala’ is incompatible with this installation
- 不断线一键安装lnmp包
- 文字识别(五)--自然场景文本检测技术综述(CTPN, SegLink, EAST)
- 在SQL Server 2005中实现异步触发器架构
- SQL SERVER 查看数据库表的字段类型,是否允许为NULL,默认值,主键等
- MSSQL、MySQL 数据库删除大批量千万级百万级数据的优化
- 如何系统学习 Ps、CAD、Office 等软件?
- python爬取公众号推荐,用python爬取公众号的方法
- C++中setw()函数
- brat标注工具知识总结
- Linux入门居然只要会看就行!!!
- CentOS之vim操作
热门文章
- L1-005 考试座位号 (15分) C语言实现(18行代码AC!)
- 解题报告——例题5-8 Unix is 命令(UVa 400)——26行代码解决
- Tomcat内部结构
- Eclipse安装AmaterasUML
- 安徽理工大学计算机学院蒋群,计算机学院2001级校友十周年聚会
- Minigui及lgui使用全解释
- 判定两个tensor维度相同_Tensorflow源码解析5 -- 图的边 - Tensor
- 转储的mysql如何导入,如何将大型(14 GB)MySQL转储文件导入新的MySQL数据库?
- python 输出引号_python输出字符串单双引号如何选择
- android内容提供者_挖穿Android第三十九天