使用 SparkApplications
操作员运行在 Kubernetes 的 SparkApplication
自定义资源类型对象中指定的 Spark 应用程序。使用 SparkApplication
的最常见方式是将 SparkApplication
规范存储在 YAML 文件中,并使用 kubectl
命令或 sparkctl
命令来操作 SparkApplication
。操作员自动将 SparkApplication
中配置的应用程序提交到 Kubernetes 集群上运行,并使用 SparkApplication
来收集并向用户展示驱动程序和执行器的状态。
与所有其他 Kubernetes API 对象一样,SparkApplication
需要 apiVersion
、kind
和 metadata
字段。有关使用清单的常规信息,请参阅使用 kubectl 进行对象管理。
SparkApplication
还需要一个 .spec
部分。此部分包含用于指定应用程序各个方面的字段,包括其类型(Scala
、Java
、Python
或 R
)、部署模式(cluster
或 client
)、主应用程序资源 URI(例如,应用程序 jar 的 URI)、主类、参数等。还可以通过可选字段 .spec.nodeSelector
支持节点选择器。
它还包含用于指定统一容器镜像(供驱动程序和执行器使用)和镜像拉取策略的字段,即 .spec.image
和 .spec.imagePullPolicy
。如果需要使用自定义的初始化容器(在驱动程序和执行器 Pod 中)镜像,可以使用可选字段 .spec.initContainerImage
来指定。如果设置,.spec.initContainerImage
会覆盖 .spec.image
作为初始化容器镜像。否则,将使用由 .spec.image
指定的镜像作为初始化容器。如果 .spec.image
和 .spec.initContainerImage
都未设置,则无效。
下面是一个示例,显示了 SparkApplication
规范的一部分
apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
name: spark-pi
namespace: default
spec:
type: Scala
mode: cluster
image: spark:3.5.1
mainClass: org.apache.spark.examples.SparkPi
mainApplicationFile: local:///opt/spark/examples/jars/spark-examples_2.12-3.5.1.jar