使用 SparkApplications

使用 SparkApplications

创建新的 SparkApplication

可以使用 `kubectl apply -f ` 命令或 `sparkctl create ` 命令,从存储 SparkApplication 规范的 YAML 文件创建 `SparkApplication`。有关 `sparkctl create` 命令的用法,请参考 `sparkctl` README。成功创建 `SparkApplication` 后,Operator 将接收它并按照规范中配置的方式将应用程序提交到 Kubernetes 集群上运行。请注意,`SparkOperator` 仅在 `Cluster` 模式下提交 `SparkApplication`。

删除 SparkApplication

可以使用 `kubectl delete ` 命令或 `sparkctl delete ` 命令删除 `SparkApplication`。有关 `sparkctl delete` 命令的用法,请参考 `sparkctl` README。删除 `SparkApplication` 将删除与其关联的 Spark 应用程序。如果应用程序在删除时正在运行,则应用程序将被终止,并且与应用程序关联的所有 Kubernetes 资源将被删除或由垃圾回收器回收。

更新 SparkApplication

可以使用 `kubectl apply -f ` 命令更新 `SparkApplication`。成功更新 `SparkApplication` 后,Operator 将接收到更新后的和旧的 `SparkApplication` 对象。如果 `SparkApplication` 的规范已更改,Operator 将使用更新后的规范提交应用程序运行。如果应用程序当前正在运行,Operator 会终止正在运行的应用程序,然后使用更新后的规范提交新的运行。目前计划改进 `SparkApplication` 更新的处理方式。例如,如果更改是为了增加执行器实例的数量,比起终止当前正在运行的应用程序并启动新的运行,增量启动额外的执行器 Pod 会提供更好的用户体验。

检查 SparkApplication

可以使用 `kubectl describe sparkapplications ` 命令检查 `SparkApplication`。该命令的输出显示 `SparkApplication` 的规范、状态以及与其相关的事件。这些事件传达了 `SparkApplication` 的整个过程和错误。

配置应用程序自动重启和失败处理

Operator 支持使用可选字段 `.spec.restartPolicy` 配置自动应用程序重启,其中包含可配置的 `RestartPolicy`。以下是 `RestartPolicy` 示例:

  restartPolicy:
     type: OnFailure
     onFailureRetries: 3
     onFailureRetryInterval: 10
     onSubmissionFailureRetries: 5
     onSubmissionFailureRetryInterval: 20

有效的 restartPolicy 类型包括 `Never`、`OnFailure` 和 `Always`。应用程序终止后,Operator 根据其终止状态和规范中的 `RestartPolicy` 判断应用程序是否需要重启。如果应用程序需要重启,Operator 会通过提交新的运行来重启它。对于 `OnFailure`,Operator 进一步支持通过 `onFailureRetries` 和 `onSubmissionFailureRetries` 字段设置重试次数限制。此外,如果提交重试次数未达到上限,Operator 会使用线性回退策略重试提交应用程序,回退间隔由 `onFailureRetryInterval` 和 `onSubmissionFailureRetryInterval` 指定,这两个字段对于 `OnFailure` 和 `Always` `RestartPolicy` 都是必需的。如果旧的资源(如 driver pod、UI Service/Ingress 等)仍然存在,在提交新运行之前会被删除,并且由提交客户端创建新的 driver pod,因此 driver 会被有效地重启。

设置 SparkApplication 的 TTL

`SparkApplication` API 的 `v1beta2` 版本开始支持 `SparkApplication` 的 TTL,通过一个新的可选字段 `.spec.timeToLiveSeconds` 实现。如果设置了该字段,它定义了 SparkApplication 终止后存活的时间(以秒为单位)。如果当前时间超过 SparkApplication 终止后的 `.spec.timeToLiveSeconds`,`SparkApplication` 对象将被垃圾回收。以下示例说明了如何使用此字段:

spec:
  timeToLiveSeconds: 3600

请注意,此功能要求启用 informer 缓存重新同步,该功能默认启用,重新同步间隔为 30 秒。您可以通过设置标志 `-resync-interval=` 来更改重新同步间隔。

反馈

此页面是否有帮助?


最后修改于 2024年12月26日:修复 sparkctl 链接 (#3947) (10ed1cc)