默认情况下,Spark程序运行完毕关闭窗口之后,就无法再查看运行记录的 Web UI(4040) 了,但通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程。本篇博客,博主就为大家带来在Spark上配 JobHistoryServer 的详细过程。 在 Spark-shell 没有退出之前, 我们是可以看到正在执行的任务的日志情况: http://hadoop102:4040 . 但是退出 Spark-shell 之后, 执行的所有任务记录全部丢失. 所以需要配置任务的历史服务器, 方便在任何需要的时候去查看日志.
Web UI(4040)
HistoryServer
JobHistoryServer
Spark-shell
在配置之前,如果spark服务还在启动中请先停止!
[bigdata@hadoop002 spark]$ sbin/stop-all.sh
spark-default.conf
[bigdata@hadoop002 conf]$ mv spark-defaults.conf.template spark-defaults.conf
//在spark-defaults.conf文件中, 添加如下内容: [bigdata@hadoop002 conf]$ vim spark-defaults.conf spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop002:9000/spark-job-log
hdfs://hadoop201:9000/spark-job-log 目录必须提前存在, 名字随意
hdfs://hadoop201:9000/spark-job-log
[bigdata@hadoop002 spark]$ hadoop fs -mkdir /spark-job-log
spark-env.sh
[bigdata@hadoop002 conf]$ vim spark-env.sh export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://hadoop002:9000/spark-job-log"
参数描述 :
参数描述
spark.eventLog.dir :Application在运行过程中所有的信息均记录在该属性指定的路径下;
spark.eventLog.dir
spark.history.ui.port=18080 WEBUI访问的端口号为18080
spark.history.ui.port=18080
spark.history.fs.logDirectory=hdfs://hadoop002:9000/spark-job-log 配置了该属性后,在 start-history-server.sh 时就无需再显式的指定路径,Spark History Server页面只展示该指定路径下的信息
spark.history.fs.logDirectory=hdfs://hadoop002:9000/spark-job-log
start-history-server.sh
spark.history.retainedApplications=30 指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
spark.history.retainedApplications=30
// 可依次操作 也可分发 xsync spark-defaults.conf xsync spark-env.sh
// 1. 需要先启动 HDFS [bigdata@hadoop002 hadoop-2.7.2]$ sbin/start-dfs.sh // 2. 启动spark [bigdata@hadoop002 spark]$ sbin/start-all.sh // 2. 然后再启动: [bigdata@hadoop002 spark]$ sbin/start-history-server.sh
ui 地址: http://hadoop002:18080
bin/spark-submit \