问题
以 standalone模式、yarn client 模式运行时,在运行Spark Application的时候,Spark会提供一个 WEB UI,可以查看应用程序的运行时信息
当 Application 完成后(成功/失败),WEB UI 就会关闭,即:Spark Application运行完(成功/失败)后,将无法查看Application的历史记录;
解决
部署 Spark history Server 后,在Application执行的过程中记录下了日志事件信息,那么在Application执行结束后,WEB UI 仍可以展现出该Application在执行过程中的运行时信息
Spark运行在 yarn 或者 mesos 上,通过 history server仍然可以显示 Application的运行时参数信息
配置
创建 spark-defaults.conf
根据 spark-defaults.conf.template 创建 spark-defaults.conf
cd /program/spark-3.0.0/conf/
cp spark-defaults.conf.template spark-defaults.conf
修改 spark-default.conf
配置日志存储路径,存储在 hdfs 上
vim spark-defaults.conf
添加下面内容:
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop1:8020/spark/logs
# spark历史服务的ip、端口号,可略
spark.yarn.historyServer.address hadoop1:18080
# spark历史web服务的端口号,可略
spark.history.ui.port 18080
注意:
HDFS 上的 spark/logs 目录 必须存在,否则报错
创建 directory 目录
在 HDFS 上创建目录:
hadoop fs -mkdir -p /spark/logs
修改 conf/spark-env.sh
vim spark-env.sh
添加日志配置:
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop1:8020/spark/logs
-Dspark.history.retainedApplications=30"
解释:
-Dspark.history.ui.port=18080:WEB服务端口号为18080-Dspark.history.fs.logDirectory=hdfs://hadoop1:8020/spark/logs:历史服务器日志存储路径,保存在 hdfs 上。
在$HADOOP_HOME/etc/hadoop/core-site.xml中配置,参见 链接-Dspark.history.retainedApplications=30:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
启动历史服务
sbin/start-history-server.sh
查看进程
执行下面命令:
jps
显示下面进程,表示启动成功
HistoryServer
停止历史服务
sbin/stop-history-server.sh
测试
提交应用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
查看 历史 服务
查看yarn web页面
在 右侧 点击 【history】

