运行 SparkApplication
运行 Kueue 调度的 SparkApplication
Feature state alpha since Kueue v0.17
Note
SparkApplicationIntegration 目前仍处于 Alpha 测试阶段,默认情况下处于禁用状态。
你可以通过编辑 SparkApplicationIntegration 特性门控来启用它。
有关特性门控配置的详细信息,
请参阅安装指南。
此页面展示了在运行 Spark Operator SparkApplication 时,如何利用 Kueue 的调度和资源管理能力。
本指南适用于对 Kueue 有基本了解的批处理用户。 欲了解更多信息,请参阅 Kueue 概述。
在你开始之前
检查管理集群配额, 以获取初始集群设置的详细信息。
你可以修改已安装版本的 Kueue 配置, 以将 SparkApplication 纳入支持的工作负载中。
注意
要使用 SparkApplication 集成,必须安装 Spark Operator v2.4.0 或以上版本。
请同时记住以下几点:
- 你需要激活将部署 SparkApplication 的命名空间, 如官方安装文档中所述。
- 你需要提前创建 spark 服务账号并附加适当的角色。 详情请参考 Spark Operator 的入门指南。
Note
要使用 SparkApplication,在 v0.8.1 之前的版本中,安装后需要重启 Kueue。 你可以通过运行以下命令来完成此操作:kubectl delete pods -l control-plane=controller-manager -n kueue-system。
Spark Operator 定义
a. 队列选择
目标本地队列应在 SparkApplication
配置的 metadata.labels 部分中指定。
metadata:
labels:
kueue.x-k8s.io/queue-name: user-queue
Note
SparkApplication 集成不支持动态分配。如果你在 SparkApplication 中设置了spec.dynamicAllocation.enabled=true,Kueue 将在 Webhook 中拒绝此类资源。
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
反馈
这个页面有帮助吗?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.