Spark - 安装部署详细教程3(配置历史服务)
在 Spark 应用程序运行期间,我们可以通过 WebUI 控制台页面来查看具体的运行细节,即在浏览器中通过地址:http://<driver-node>:4040 即可查看当前的运行状态。但是一旦应用程序运行结束,我们就无法回顾刚刚运行的程序细节,不利于我们开展程序优化或者问题排查工作。为了解决这个问题,我们需要为集群配置 Spark History Server。
三、Spark history Server(Spark 历史服务)
1,服务介绍
通过相应的配置,Spark 应用程序在运行完应用程序之后,会将应用程序的运行信息写入指定目录,而 Spark history server 可以将这些运行信息装载并以 web 的方式供用户浏览。
2,操作步骤
(1)在各个节点的 spark 目录下 conf 目录中,创建一个 spark-defaults.conf 文件,文件内容如下(注意所有的 master 节点和 worker 节点均需要):
参数说明:
- spark.eventLog.enabled:是否记录 Spark 事件
- spark.eventLog.dir:保存日志相关信息的路径,可以是 hdfs:// 开头的 HDFS 路径,也可以是 file:// 开头的本地路径(如 file:///usr/local/spark-log),都需要提前创建。为了日志统一存储建议使用 HDFS 目录,因为使用本地本地的话,在各个节点提交的应用日志是分别存储在各个节点本地目录下的。
spark.eventLog.enabled true spark.eventLog.dir hdfs://192.168.60.8:8020/spark-log
(2)进入 master 节点的 spark 目录下的 conf 目录,修改 spark-env.sh 文件,添加如下添加日志配置:
参数说明:
- spark.history.ui.port:历史服务 WEB UI 访问的端口号
- spark.history.fs.logDirectory:指定历史服务器日志存储路径
- spark.history.retainedApplications:设置缓存 Cache 中保存的应用程序历史记录的个数,默认 50,如果超过这个值,旧的将被删除。注:缓存文件数不表示实际显示的文件总数。只是表示不在缓存中的文件可能需要从硬盘读取,速度稍有差别。
export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://192.168.60.8:8020/spark-log -Dspark.history.retainedApplications=30"
(3)重启 master 服务,确保提交的应用程序的运行信息写入指定目录:
./sbin/stop-master.sh ./sbin/start-master.sh
(4)启动历史服务:
./sbin/start-history-server.sh
3,使用测试
(1)我们提交一个应用程序:
./bin/spark-submit \ --master spark://192.168.60.8:7077 \ --class org.apache.spark.examples.SparkPi \ examples/jars/spark-examples_2.12-3.4.1.jar \ 10
(2)接着访问历史服务的 Web UI 页面,就可以看到历史记录了: