【Spark十八】Spark History Server
本文包括如下内容:
-
Spark History Server的作用
-
配置Spark History Server
-
运行Spark History Server
-
查看Spark程序的运行信息
Spark History Server的作用
在 运行Spark应用程序的时候,driver会提供一个webUI用于展现应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口。也就是说,这个服务是伴随Spark应用程序的运行周期的,也就是当应用程序运行完成后,将无法查看应用程序的历史记录。Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览
伴随Spark应用程序而启动的web查看服务的默认端口号是4040,或者4041(如果当前端口被占用,比如4040被占用,那么Spark会抛一个异常,但是不影响应用继续运行,driver会使用这个已用的端口加1,以此类推)
配置Spark History Server
1. 在Spark的conf目录下,将spark-defaults.conf.template改名为spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
2. 对spark-defaults.conf作如下配置
///Spark Master的IP/Port
spark.master spark://hadoop.master:7077
///是否记录作业产生的事件或者运行状态(job,stage等使用内存等信息)
spark.eventLog.enabled true
///如果记录作业产生的事件或者运行状态,则将事件写入什么位置
spark.eventLog.dir hdfs://hadoop.master:9000/user/hadoop/sparkevtlog
///http history的监听端口号,通过http://hadoop.master:18080访问
spark.history.ui.port 18080
启动Spark History Server
1, 使用如下命令启动History Server
[[email protected] sbin]$sbin/start-history-server.sh
启动完成后,发现18080并没有监听,到Spark的logs目录下查看history server的启动日志,发现报如下错误:
Caused by: java.lang.IllegalArgumentException: Log directory specified does not exist: file:/tmp/spark-events. Did you configure the correct one through spark.fs.history.logDirectory?
2. 将spark.fs.history.logDirectory配置到conf/spark-defaults.conf目录里,发现并不起作用,
3.查看start-history-server.sh脚本内容,发现这个参数可以作为启动脚本的第一个参数传递:
if [ $# != 0 ]; then
echo "Using command line arguments for setting the log directory is deprecated. Please "
echo "set the spark.history.fs.logDirectory configuration option instead."
export SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=$1"
fi
所以使用如下命令启动History Server
./start-history-server.sh hdfs://hadoop.master:9000/user/hadoop/sparkhistorylog
查看作业的执行情况
1. 当History第一次启动,从没有作业执行,那么History Server上不显示内容(只提示没有Job信息可供查看)
2. 使用spark-submit提交一个作业,保证SparkContext调用了stop方法,否则History Server不会显示历史信息
3.访问http://hadoop.master:18080得到如下结果
查看作业信息
点击App ID访问http://192.168.26.136:18080/history/app-20150110055201-0002/,可以打开这个Spark程序的执行情况。
可以查看如下信息:
-
Spark程序启动几个作业
-
这个Spark程序一个Job包含多少Stages
-
这个Spark程序一共包含多少个Stages
-
Stage的详细信息
-
这个Spark程序是几个Executor执行完成的
1. 在这个Spark程序启动几个Job
2. Spark程序一个Job包含多少Stages
3. Spark程序一共包含多少个Stages
4. Stage的详细信息
5. Spark程序是几个Executor执行完成的