1 Overview
要在 K8S 集群中部署一套 Spark History Server,首先要了解,怎么部署一个本地版本。然后就是了解一些基本的 K8S 相关的知识点。后就是两部分知识结合起来,看看业界流行的方案是如何实现的。
Spark History Server 缩写成 HS
2 Spark History Server 本地试玩
其实 Spark 官网关于如何部署 Spark History Server 是有很详细的说明的。这里以 Spark 2.3.0 为例。
https://spark.apache.org/docs/2.3.0/monitoring.html
总体来说 start-history-server.sh,可以启动 HS 的进程。
![](https://image.z.itpub.net/zitpub.net/JPG/2023-07-04/FC6A687461429E0F244267394B7A8996.jpg)
默认通过访问 18080 端口,就可以将 job 的历史信息(注意还包括 on-going,也就是正在运行的 job)。
Spark Job 需要打开两个配置。
spark.eventLog.enabled true
spark.eventLog.dir hdfs://namenode/shared/spark-logs
为了在本地起一个 HS 的后台进程,我们可以下载 Spark 的发行包。
创建一个目录,来放 event log。
mkdir /tmp/spark-log
然后运行一个 SparkPi 程序,只要有配置 Java Home,正常 JDK8 都能跑起来的。
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local \
--conf spark.eventLog.enabled=true \
--conf spark.eventLog.dir=file:///tmp/spark-log \
./examples/jars/spark-examples_2.11-2.2.0-k8s-0.5.0.jar \
只要配置了 event log 的位置,日志就能看到以下信息。
![](https://image.z.itpub.net/zitpub.net/JPG/2023-07-04/7EAF4F9E387F5C36A9CEDFE245A0530C.jpg)
因为启动 HS 的进程需要 event log,现在有了,所以就能启动了。查看 18080 默认端口的页面。
![](https://image.z.itpub.net/zitpub.net/JPG/2023-07-04/B8049A24123666DCB61043E1113A7FFD.jpg)
刚刚运行的 SparkPi 程序的 Job 在这里。
![](https://image.z.itpub.net/zitpub.net/JPG/2023-07-04/0C406131EDF16663E18D51F982B22A00.jpg)
3 Docker 化
本地环境总是很蛋疼的。属性 Docker 之后,我想不会有人再在本地跑 Spark,HDFS 之类的测试程序的了。具体说说如何用 Docker 来跑 Spark。