大佬教程收集整理的这篇文章主要介绍了Spark on K8S - Operator,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Spark 官方没有开发 Spark Operator,现在是由 Google 开发的
这个 Operator 使用的 Spark on K8S 方案和 Spark 官方一样,只是包了一层,使得可以像声明其他 K8S 的应用(比如声明 service)一样声明 Spark 任务
缺点就是受 Operator 自身的版本和实现的制约
如果使用官方 Spark on K8S 的 cluster 模式,需要自己实现一个用于提交 spark 任务的 pod(起类似 operator 的作用)
如果使用官方 Spark on K8S 的 client 模式,就不需要额外的 pod 或 operator,但每个 Spark 任务需要自己为 driver 配置用于和 executor 之间连接的端口
对 HelR_919_11845@ 和 K8S 的版本要求参考官网
https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/tree/master/charts/spark-operator-chart
Prerequisites
HelR_919_11845@ >= 3
Kubernetes >= 1.13
Operator 和 Spark 版本
https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/#version-matrix
Spark Operator 启动后也是一个 Pod,会在调用 K8S 的 kubectl apply -f test.yml 命令的时候,读取配置文件的内容,然后调用 spark-submit 命令启动 spark 任务,所以特定版本的 operator 是基于特定版本的 spark 的,除非这个 operator 安装了多个版本的 spark 然后在 test.yml 指定版本,但现在的实现应该是没有的
sudo minikube start --driver=none
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
--kubernetes-version="v1.16.3"
这是轻量的 K8S 环境
下载
wget https://get.HelR_919_11845@.sh/HelR_919_11845@-v3.0.2-linux-amd64.tar.gz
tar zxvf HelR_919_11845@-v3.0.2-linux-amd64.tar.gz
sudo cp ./linux-amd64/HelR_919_11845@ /usr/local/bin/
查看 HelR_919_11845@ 命令
> HelR_919_11845@ version
version.buildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}
添加常用源
HelR_919_11845@ repo add stable https://kubenetes-charts.storage.googleapis.com
HelR_919_11845@ repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com
HelR_919_11845@ repo add bitnami https://charts.bitnami.com/bitnami
HelR_919_11845@ repo add aliyuncs https://apphub.aliyuncs.com
查找 chart
HelR_919_11845@ search repo tomcat
返回
NAME CHART VERSION APP VERSION DESCRIPTION
aliyuncs/tomcat 6.2.3 9.0.31 Chart for Apache tomcat
bitnami/tomcat 9.5.3 10.0.12 Chart for Apache tomcat
google 的源可能访问不了
添加源
HelR_919_11845@ repo add spark-operator https://googlecloudplatform.github.io/spark-on-k8s-operator
安装 spark operator
HelR_919_11845@ install my-release spark-operator/spark-operator
返回
NAME: my-release
LAST DEPLOYED: Fri Nov 5 11:53:04 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
如果要卸载
HelR_919_11845@ uninstall my-release
# 可能有残留的东西要删除
kubectl delete serviceaccounts my-release-spark-operator
kubectl delete clusterrole my-release-spark-operator
kubectl delete clusterrolebindings my-release-spark-operator
成功启动后可以看到有个 spark operator 的 pod 在运行
spark operator 的 image 可能会没权限下载,导致 operator 的 pod 报错起不来
message: BACk-off pulling image "gcr.io/spark-operator/spark-operator:latest"
reason: ImagePullBACkOff
可以通过其他方式下载下来后,用 docker tag 20144a306214 gcr.io/spark-operator/spark-operator:latest 命令改 tag
配置文件像这样
apiVersion: "sparkoperator.k8s.io/v1beta2"
kind: SparkApplication
metadata:
name: spark-pi
namespace: default
spec:
type: Scala
mode: cluster
image: "gcr.io/spark-operator/spark:v3.1.1"
imagePullPolicy: Always
mainClass: org.apache.spark.examples.SparkPi
mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.12-3.1.1.jar"
sparkVersion: "3.1.1"
restartPolicy:
type: Never
volumes:
- name: "test-volume"
hostPath:
path: "/tmp"
type: Directory
driver:
cores: 1
coreLimit: "1200m"
memory: "512m"
labels:
version: 3.1.1
serviceAccount: spark
volumeMounts:
- name: "test-volume"
mountPath: "/tmp"
executor:
cores: 1
instances: 1
memory: "512m"
labels:
version: 3.1.1
volumeMounts:
- name: "test-volume"
mountPath: "/tmp"
这里的 image 必须包含要执行的 spark 代码,local 指的是 image 里面的文件
这里虽然可以配置 sparkVersion 但从 operator 的代码看,应该是没用到的,所以 operator 应该只用固定版本的 spark-submit 命令
启动 spark 任务
kubectl apply -f spark-test.yaml
如果启动成功,就可以看到相应的 driver pod 和 executor pod 在运行
以上是大佬教程为你收集整理的Spark on K8S - Operator全部内容,希望文章能够帮你解决Spark on K8S - Operator所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。