Spark Operator 的编译和部署
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"}
相关文章