默认情况下,Spark程序运行完毕关闭窗口之后,就无法再查看运行记录的Web UI(4040)
了,但通过 HistoryServer
可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程。本篇博客,博主就为大家带来在Spark上配JobHistoryServer
的详细过程。
在 Spark-shell
没有退出之前, 我们是可以看到正在执行的任务的日志情况:http://hadoop102:4040. 但是退出 Spark-shell
之后, 执行的所有任务记录全部丢失.
所以需要配置任务的历史服务器, 方便在任何需要的时候去查看日志.
一. 配置步骤
在配置之前,如果spark服务还在启动中请先停止!
代码语言:javascript复制[bigdata@hadoop002 spark]$ sbin/stop-all.sh
- 1. 配置
spark-default.conf
文件, 开启 Log
[bigdata@hadoop002 conf]$ mv spark-defaults.conf.template spark-defaults.conf
代码语言:javascript复制//在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
目录必须提前存在, 名字随意
[bigdata@hadoop002 spark]$ hadoop fs -mkdir /spark-job-log
- 2. 修改
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.history.ui.port=18080
WEBUI访问的端口号为18080
spark.history.fs.logDirectory=hdfs://hadoop002:9000/spark-job-log
配置了该属性后,在start-history-server.sh
时就无需再显式的指定路径,Spark History Server页面只展示该指定路径下的信息
spark.history.retainedApplications=30
指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
- 3. 分发配置文件
// 可依次操作 也可分发
xsync spark-defaults.conf
xsync spark-env.sh
- 4. 启动历史服务
// 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
- 5. 登录Web界面
ui 地址: http://hadoop002:18080
- 6. 启动任务, 查看历史服务器
bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://hadoop002:7077
--executor-memory 1G
--total-executor-cores 6
./examples/jars/spark-examples_2.11-2.1.1.jar 100
本次的分享就到这里了