Alauda Build 的 Spark operator

Alauda Build 的 Spark operator 是一个 Kubernetes 原生的 operator,用于在 Kubernetes 上运行和管理 Apache Spark 应用。它基于开源的 Kubeflow Spark Operator 构建,使你能够通过 Kubernetes Custom Resource Definitions (CRDs) 声明式地提交、调度、监控和清理 Spark 工作负载——而无需自行运行 spark-submit 客户端或独立的 Spark 集群。

概述

该 operator 提供以下 CRD(API group sparkoperator.k8s.io):

  • SparkApplication:定义一个单独的 Spark 应用(一个 driver 及其 executors)。该 operator 以 cluster mode 提交它,跟踪其生命周期直至完成,并回收其资源。
  • ScheduledSparkApplication:按照 cron 调度运行一个 SparkApplication,并提供并发与运行历史控制。
  • SparkConnect:管理一个长期运行的 Spark Connect server,用于交互式 / 远程 Spark 会话。

主要特性

  • 声明式提交:将 Spark 作业作为 Kubernetes 资源提交;operator 会替你以 cluster mode 运行 spark-submit
  • 生命周期管理:跟踪 driver/executor 状态,暴露 applicationState,遵循配置的重启策略,并清理已完成的应用。
  • 调度:通过 ScheduledSparkApplication 实现 cron 风格的周期性作业。
  • Admission webhook:对 Spark 资源进行变更与校验(volumes、affinity、security context 等)。
  • 批调度器集成:可选通过 Volcano 或 Yunikorn 实现 gang scheduling。
  • Metrics:为应用、executors 和提交延迟暴露 Prometheus metrics。

使用场景

  • 批量数据处理:在 Kubernetes 上运行 ETL 和分析作业。
  • 定时流水线:无需外部调度器即可运行周期性 Spark 作业。
  • 分布式数据准备 / ML:大规模特征工程与训练数据准备。
  • 交互式 Spark:通过 Spark Connect 进行远程 Spark 会话。

此版本包含 Apache Spark 4.0.1。有关 Spark 概念和 Kubernetes 相关细节,请参阅 Running Spark on Kubernetes