绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Spark Operator 的编译和部署
2023-07-04 17:57:51

Overview

首先需要理解 Spark Operator 的基础镜像是 Spark 的镜像,主要原因是 Spark Operator 会在容器中调用 spark-submit 命令来执行 Spark 任务。所以所有的 Spark Jars 等依赖在部署了 Spark Operator 的时候就已经确定了。

那么在 Spark on Kubernetes 的架构里,spark-submit 具体做了什么呢?其实在 spark-submit 主要是根据用户提交的脚本,按照各种 conf,来配置了 Driver Pod,包括 Pod 需要挂载的 Volume 等等,后通过 k8s 的 Java Client,向 Kubernetes 的 ApiServer 发送构建 Driver Pod 的请求,然后后面的事情,spark-submit 一般就不管了,然后如何装配 Executor Pod,就由 Driver 来控制了。

Spark Operator 的版本

Spark Operator 也已经连续发布了多个版本了,而其中使用到的一些 API 也跟 Kubernetes 集群的版本有关,也就是说,不是所有版本的 Spark Operator 都适合所有的 Kubernetes 集群。以我们使用的其中一个 Kubernetes 集群为例。

# kubectl version
Client Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.15-27+31187439c9b31f", GitCommit:"31187439c9b31f99c93c514462e4157497f6d299", GitTreeState:"clean", BuildDate:"2018-09-17T08:09:01Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.15-27+31187439c9b31f", GitCommit:"31187439c9b31f99c93c514462e4157497f6d299", GitTreeState:"clean", BuildDate:"2018-09-17T08:09:01Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

显然这个版本跟新的 Spark Operator 是不完全兼容的,详细也可以看新的 README

因此,为了满足部署 Spark Operator 在 1.8 的 Kubernetes 集群中,我们需要找到匹配版本的 Spark Operator,否则会有一些不可预见的问题。

Spark Operator Chart

Spark Operator 的 Helm Chart 主要是 Lightbend 公司的团队在维护,下面目前发布的版本。因为 Helm Chart 中默认用的是 Lightbend 提供的 Spark 镜像,所以如果需要定制 Spark 的话,那么好是自行编译。

# helm search 一下
helm search -l incubator/sparkoperator

构建部署 Spark Operator

因为 Spark 在内部的计算平台上运行,我们对 Spark 进行了一些定制,主要是针对 spark-submit 过程的变化,所以我们需要打一个 K8S 1.8 集群可用的 Spark Operator 的镜像,基础镜像当然是内部版本 Spark 的镜像,假设为 spark:v3.0.0-0.0.1

然后在 Spark Operator 的项目目录下执行下面的命令,可以得到 Spark Operator 可执行镜像文件 spark-operator:alpha-0.0.1

docker build --build-arg SPARK_IMAGE=spark:v3.0.0-0.0.1 -t spark-operator:alpha-0.0.1 .

部署的话,仍然可以通过 helm install 来部署,但是需要仔细阅读可选的选项,具体可以看 Spark Operator Chart 的 README

helm install incubator/sparkoperator --name sparkoperator --set ingressUrlFormat=localhost --set operatorImageName=spark-operator --set operatorVersion=alpha-0.0.1

然后自定义的 Spark Operator 部署完毕了。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Spark SQL
创建时间:2022-04-11 10:32:39
Spark SQL
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~