编程语言   发布时间:2022-06-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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 on K8S - Operator

Spark Operator 启动后也是一个 Pod,会在调用 K8S 的 kubectl apply -f test.yml 命令的时候,读取配置文件的内容,然后调用 spark-submit 命令启动 spark 任务,所以特定版本的 operator 是基于特定版本的 spark 的,除非这个 operator 安装了多个版本的 spark 然后在 test.yml 指定版本,但现在的实现应该是没有的

启动 minikube
sudo minikube start --driver=none 
                    --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers 
                    --kubernetes-version="v1.16.3"

这是轻量的 K8S 环境

安装 HelR_919_11845@

下载

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@ 安装 spark-operator

添加源

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

提交 spark 任务

配置文件像这样

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,请注明来意。