Spark History Server

在运行 Spark 应用程序的时候,Driver 会提供一个 WebUI 用于展现应用程序的运行信息,但是这个服务是伴随 Spark 应用程序的运行周期的,当应用程序运行完成后,将无法查看应用程序的历史记录。

Spark history server 就是为了应对这种情况而产生的,通过配置,Spark 应用程序在运行成之后,将应用程序的运行信息写入指定目录,Spark history server 可以将这些信息加载并以 Web 或命令行的方式供用户浏览。

配置 Spark History Server

在 Spark 的 /conf 目录下,基于 spark-defaults.conf.template 复制创建 spark-defaults.conf

# Spark Master Host:Port  
spark.master                     spark://hadoop.master:7077  
# 是否记录作业产生的事件或者运行状态(job,stage 等使用内存等信息)
spark.eventLog.enabled           true  
# 如果记录作业产生的事件或者运行状态,则将事件写入什么位置  
spark.eventLog.dir               hdfs://hadoop.master:9000/user/hadoop/sparkevtlog  
# history http 的监听端口号,通过 http://hadoop.master:${spark.history.ui.port} 访问  
spark.history.ui.port            18080  

启动 Spark History Server

使用如下命令启动 History Server

> ./start-history-server.sh

starting org.apache.spark.deploy.history.HistoryServer, logging to ../logs/spark-hadoop-org.apache.spark.deploy.history.HistoryServer-1-hadoop.out

启动后访问 http://${spark.master}:{spark.history.ui.port}

History Server 参数

spark-env.sh 配置

通过设置 SPARK_HISTORY_OPTS 的方式

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3"

spark.history.fs.update.interval
默认值: 10,单位秒
刷新日志的时间,更短的时间可以更快检测到新的任务以及任务执行情况,但过快会加重服务器负载

spark.history.ui.port
默认值:18080
history-server 的 Web 端口

spark.history.retainedApplications
默认值:50
在内存中保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,当再次访问已被删除的应用信息时需要重新构建页面。

spark.history.fs.cleaner.enabled
默认值:false
指定 history 日志是否定时清除,一定要设置成 true。

spark.history.fs.cleaner.interval
默认值:1d
指定 history 日志定时清除的周期,默认一天

spark.history.fs.cleaner.maxAge
默认值:7d
指定 history 日志生命周期,默认七天

spark-defaults.conf 配置

每个配置一行

spark.eventLog.enabled  true
spark.eventLog.compress true

spark.eventLog.enabled
默认值:false
是否记录 Spark 事件,用于应用程序在完成后重构 WebUI

spark.eventLog.compress
默认值:false
是否压缩记录 Spark 事件,前提 spark.eventLog.enabled 为 true,默认使用的是 snappy 压缩

spark.eventLog.dir
默认值:file:///tmp/spark-events
保存日志相关信息的路径,以 hdfs:// 开头的是 HDFS 路径,以 file:// 开头的是本地路径,需要提前创建


spark.history.fs.logDirectoryspark.eventLog.dir 指定目录的区别?

spark.eventLog.dir:日志记录的位置
spark.history.fs.logDirectory:页面展示指定路径下的信息
所以如果要显示最新的全部的日志,这两个参数需要指定同一个目录


你可能感兴趣的:(Spark History Server)