kubernetes-handbook/usecases/spark-on-kubernetes.md

27 lines
1.4 KiB
Markdown
Raw Normal View History

2021-10-30 08:15:58 +08:00
# Spark 与 Kubernetes
Spark 原生支持 standalone、mesos 和 YARN 的调度方式,当前 kubernetes 社区正在支持 kubernetes 的原生调度来运行 spark。当然您也可以在 Kubernetes 直接部署 spark on YARN 或者 spark standalone 模式。
## Spark Standalone
使用 spark standalone 模式在 Kubernetes 上运行kubernetes 不负责 spark 任务的调度。这种模式中使用的 spark 本身负责任务调度kubernetes 只是作为一个 spark 的部署平台。
## Spark on Yarn
使用 StatefulSet 和 Headless serverless 来实现。这种模式中 kubernetes 依然不负责 spark 应用的调度,而只是将 Yarn 换了一个部署环境而已。
下面是架构图:
![Spark on yarn with kubernetes](../images/spark-on-yarn-with-kubernetes.png)
### Spark on Kubernetes
Spark on kubernetes使用 kubernetes 作为调度引擎spark 的任务直接调度到 node 节点上。参考:[运行支持 kubernetes 原生调度的 Spark 程序](./running-spark-with-kubernetes-native-scheduler.md)。
### 调度方式总结
下图显示的是三种调度方式中单个 kubernetes node 节点上运行的 spark 相关容器的调度情况。
![在 kubernetes 上使用多种调度方式](../images/spark-on-kubernetes-with-different-schedulers.jpg)
毫无疑问,使用 kubernetes 原生调度的 spark 任务才是最节省资源的。