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 的进程。

image_1de22ln9p14511chi1atjc2u1at19.png-122.1kB

默认通过访问 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 的位置,日志就能看到以下信息。

image_1de2bfba11tgmcgq1pn010g7jnjm.png-902.1kB

因为启动 HS 的进程需要 event log,现在有了,所以就能启动了。查看 18080 默认端口的页面。

image_1de2cks3f1ooh16th12k5l3989q13.png-83.4kB

刚刚运行的 SparkPi 程序的 Job 在这里。

image_1de2cmcpc10s31meq18i719mu1mjm1g.png-103kB

3 Docker 化

本地环境总是很蛋疼的。熟悉 Docker 之后,我想不会有人再在本地跑 Spark,HDFS 之类的测试程序的了。下一篇具体说说如何用 Docker 来跑 Spark。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐