欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

部署SparkHistoryServer到K8s

时间:2023-04-20
Spark History Server running on k8s

Spark History Server(SHS)是一个无状态服务,只要eventlog没有丢失,SHS重启或者切换是不会受到影响的。当然当我们开启了SHS的磁盘缓存的时候,如果SHS换了node启动,缓存可能就会丢失,但是SHS可以根据eventlog重新生成缓存,因此我们可以认为他是一个无状态服务。这样的服务在K8s上可以很容易的进行部署,本文将介绍如何把SHS部署到8s上,分享一下可能遇到的问题。

SHS image准备

Spark暂时还没有提供官方的spark docker image,所以我们需要自己准备好这个image。不过官方有提供build image的脚本,所以自己做image还是很方便的。

spark code download

git clone https://github.com/apache/spark.git

build spark with K8s

./build/mvn -Pkubernetes -DskipTests clean package

build docker image
spark提供了bin/docker-image-tool.sh这个脚本,可以直接用它来构建你的image,这个image不仅仅可以用来跑SHS也可以用来跑spark job,但是这个是非常基础的image,如果你有一些定制需求,可以尝试修改这个脚本。比如需要有default config,例如你可以再spark repo下创建一个特定的conf文件夹,里面可以包含一些配置文件,例如spark-default.conf,然后修改docker-image-tool.sh和Dockerfile脚本,这样才能保证你的image里有你的这个文件夹。
docker-image-tool.sh

cp -r "conf" "$base_CTX/conf"

Dockerfile

COPY conf /opt/spark/conf

选择以下命令制作docker image:

$ ./bin/docker-image-tool.sh -r -t my-tag build

参考Spark官网中 Docker Images

部署SHS到k8s

准备一个yaml文件, kubectl apply -f shs.yaml
这里给到的是一个非常基本的一个deployment,重点关注下args这个参数,这里就是我们启动spark hitory server的命令。

apiVersion: apps/v1kind: Deploymentmetadata: name: shs-v1 namespace: defaultspec: selector: matchLabels: run: shs-v1 replicas: 2 template: metadata: labels: run: shs-v1 spec: containers: - image: name: shs-v1 args: ["/opt/spark/bin/spark-class", "org.apache.spark.deploy.history.HistoryServer"] ports: - containerPort: 18080 name: http env: - name: SPARK_HISTORY_OPTS value: "-Dspark.history.fs.logDirectory=hdfs://xxxxxx"

你可以创造一个service或者利用kube proxy来访问这个SHS。

kubectl expose deployment shs-v1 -n default --type=ClusterIP --name=shs-v1-svc

常见问题

could not find spark-version-info.properties
可以手动创建一个空的spark-version-info.properties文件,把它放到如下位置:
…coresrcmainresourcesspark-version-info.properties

如果你是在windows环境对spark进行build,你可能需要用到:
dos to unix命令,来转换一些.sh文件

如果spark.history.fs.logDirectory没有进行配置,就会使用默认值,/tmp/spark-events
记得在Dockerfile里进行创建

mkdir -p /tmp/spark-events &&

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。