Spark History Server的作用
在运行Spark应用程序的时候,driver会提供一个webUI用于展现应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口。也就是说,Spark Application运行完(成功/失败)后,将无法查看Application的历史记录。Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览(假如Application运行的事件日志信息已经记录下来)
配置&使用Spark History Server
1 spark-defaults.conf 增加如下内容
spark.eventLog.enabled true #允许记录事件日志 spark.eventLog.dir hdfs://master:9000/log/spark #事件日志存放位置,要提前建好目录 spark.eventLog.compress true #是否启用压缩
2 启动start-history-server.sh
./sbin/start-history-server.sh hdfs://master:9000/log/spark #需要指定日志的位置,也可以直接配置在spark-env.sh里面
3 web查看 http://master:18080
4 history server相关的配置参数描述
以spark.history开头的需要配置在spark-env.sh中的SPARK_HISTORY_OPTS,以spark.eventLog开头的配置在spark-defaults.conf
-
spark.history.updateInterval
默认值:10
以秒为单位,更新日志相关信息的时间间隔 -
spark.history.retainedApplications
默认值:50
在内存中保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,当再次访问已被删除的应用信息时需要重新构建页面。 -
spark.history.ui.port
默认值:18080
HistoryServer的web端口 -
spark.history.kerberos.enabled
默认值:false
是否使用kerberos方式登录访问HistoryServer,对于持久层位于安全集群的HDFS上是有用的,如果设置为true,就要配置下面的两个属性 -
spark.history.kerberos.principal
默认值:用于HistoryServer的kerberos主体名称 -
spark.history.kerberos.keytab
用于HistoryServer的kerberos keytab文件位置 -
spark.history.ui.acls.enable
默认值:false
授权用户查看应用程序信息的时候是否检查acl。如果启用,只有应用程序所有者和spark.ui.view.acls指定的用户可以查看应用程序信息;否则,不做任何检查 -
spark.eventLog.enabled
默认值:false
是否记录Spark事件,用于应用程序在完成后重构webUI -
spark.eventLog.dir
默认值:file:///tmp/spark-events
保存日志相关信息的路径,可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,都需要提前创建 -
spark.eventLog.compress
默认值:false
是否压缩记录Spark事件,前提spark.eventLog.enabled为true,默认使用的是snappy
5 spark-env.sh history服务配置示例
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://hadoop:9000/directory"
6 常见问题1:spark.history.fs.logDirectory和spark.eventLog.dir区别
spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下;
spark.history.fs.logDirectory:指定Spark History Server需要读取信息的路径,可以和spark.eventLog.dir不一样;