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

27 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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 任务才是最节省资源的。