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