Spark Operator
Spark Operator 是一个 Kubernetes 控制器,用于简化 Apache Spark 应用的部署与管理。它支持通过 Kubernetes 自定义资源 (CRDs) 定义和管理 Spark 应用生命周期,自动处理集群资源调度、监控和故障恢复。Spark Operator 是 Kubeflow 的一部分,适用于大数据和机器学习任务。
安装Operator
下载chart
sh
wget https://github.com/kubeflow/spark-operator/releases/download/v2.1.0/spark-operator-2.1.0.tgz1
创建命名空间
创建一个命名空间,后续的spark应用都运行在该命名空间
kubectl create ns ateng-spark1
安装Operator
修改values.yaml
修改以下配置:
- image.*: 镜像信息
- spark.jobNamespaces: spark作业命名空间,命名空间需要存在
cat values.yaml1
安装Operator
sh
helm install spark-operator \
-n spark-operator --create-namespace \
-f values.yaml \
spark-operator-2.1.0.tgz1
2
3
4
2
3
4
查看服务
sh
kubectl get pod,svc -n spark-operator1
查看日志
kubectl logs -f -n spark-operator deploy/spark-operator-controller
kubectl logs -f -n spark-operator deploy/spark-operator-webhook1
2
2
删除operator
helm uninstall spark-operator -n spark-operator1
安装sparkctl
sparkctl 是用于在 Kubernetes 上管理 Spark 作业的命令行工具,简化提交、监控、日志和管理操作。
下载软件包
wget https://github.com/kubeflow/spark-operator/releases/download/v2.1.0/sparkctl-2.1.0-linux-amd64.tgz1
安装软件
tar -zxvf sparkctl-2.1.0-linux-amd64.tgz -C /usr/bin/1
配置命令补全
sparkctl completion bash > /etc/bash_completion.d/sparkctl
source <(sparkctl completion bash)1
2
2
创建Spark应用
创建应用
部署一个简单的Spark应用(例如,Spark的Pi计算示例),注意cores是应用的资源,coreLimit和coreRequest是k8s的设置。
yaml
kubectl apply -f - <<"EOF"
apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
name: spark-pi
namespace: ateng-spark
spec:
type: Scala
mode: cluster
image: registry.lingo.local/service/spark:3.5.4
imagePullPolicy: Always
mainClass: org.apache.spark.examples.SparkPi
arguments:
- "5000"
mainApplicationFile: local:///opt/spark/examples/jars/spark-examples.jar
sparkVersion: 3.5.4
sparkUIOptions:
serviceType: NodePort
restartPolicy:
type: Never
driver:
serviceAccount: spark-operator-spark
cores: 2
coreLimit: "2"
coreRequest: "1"
memory: "2g"
executor:
cores: 2
coreLimit: "2"
coreRequest: "1"
memory: "4g"
instances: 2
EOF1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
查看应用
sh
kubectl get -n ateng-spark sparkapp spark-pi
sparkctl -n ateng-spark list1
2
2
查看pod
sh
kubectl get -n ateng-spark pods1
查看日志
kubectl logs -n ateng-spark --tail=200 spark-pi-driver1
删除应用
kubectl delete -n ateng-spark sparkapp spark-pi
kubectl delete -n ateng-spark pod spark-pi-driver1
2
2