运行 SparkApplication

运行 Kueue 调度的 SparkApplication
Feature state alpha since Kueue v0.17

此页面展示了在运行 Spark Operator SparkApplication 时,如何利用 Kueue 的调度和资源管理能力。

本指南适用于对 Kueue 有基本了解的批处理用户。 欲了解更多信息,请参阅 Kueue 概述

在你开始之前

检查管理集群配额, 以获取初始集群设置的详细信息。

查阅 Spark Operator 安装指南

你可以修改已安装版本的 Kueue 配置, 以将 SparkApplication 纳入支持的工作负载中。

Spark Operator 定义

a. 队列选择

目标本地队列应在 SparkApplication 配置的 metadata.labels 部分中指定。

metadata:
  labels:
    kueue.x-k8s.io/queue-name: user-queue

b. (可选)在 SparkOperation 中设置 Suspend 字段

spec:
  suspend: true

默认情况下,Kueue 将通过 Webhook 将 suspend 设置为 true,并在 SparkApplication 被允许时取消挂起。

SparkApplication 示例

apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
  name: spark-pi
  labels:
    kueue.x-k8s.io/queue-name: user-queue
spec:
  type: Scala
  mode: cluster                 # spark-operator supports "cluster" mode only
  sparkVersion: 4.0.0
  image: spark:4.0.0
  imagePullPolicy: IfNotPresent
  mainClass: org.apache.spark.examples.SparkPi
  mainApplicationFile: local:///opt/spark/examples/jars/spark-examples.jar
  arguments:
  - "50000"
  memoryOverheadFactor: "0"     # spark adds extra memory on memory limits
                                # for non-JVM tasks. 0 can avoid it.
  driver:
    coreRequest: "1"
    memory: 1g                  # In Java format (e.g. 512m, 2g)
    serviceAccount: spark       # You need to create this service account beforehand,
                                # and the service account should have proper role
                                # ref: https://github.com/kubeflow/spark-operator/blob/master/config/rbac/spark-application-rbac.yaml
  executor:
    instances: 2
    coreRequest: "1"
    memory: 1g                  # In Java format (e.g. 512m, 2g)
    deleteOnTermination: false  # to keep terminated executor pods for demo purpose