使用 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