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
图 8.3.1.1:Spark on yarn with kubernetes

Spark on Kubernetes

Spark on kubernetes,使用 kubernetes 作为调度引擎,spark 的任务直接调度到 node 节点上。参考:运行支持 kubernetes 原生调度的 Spark 程序

调度方式总结

下图显示的是三种调度方式中单个 kubernetes node 节点上运行的 spark 相关容器的调度情况。

在 kubernetes 上使用多种调度方式
图 8.3.1.2:在 kubernetes 上使用多种调度方式

毫无疑问,使用 kubernetes 原生调度的 spark 任务才是最节省资源的。

Copyright © 2017-2022 | Distributed under CC BY 4.0 | jimmysong.io all right reserved. Updated at 2022-04-19 12:54:09

results matching ""

    No results matching ""