spark3.0教程:配置历史服务

问题

以 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

查看 历史 服务

http://hadoop1:18080/

查看yarn web页面

http://hadoop2:8088/

在 右侧 点击 【history】


原文出处:/show_1IX2JIsrhe5k.html