使用 SparkApplications

使用 SparkApplications

创建一个新的 SparkApplication

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

删除 SparkApplication

可以使用 kubectl delete 命令或 sparkctl delete 命令删除 SparkApplication。有关 sparkctl 的使用,请参阅 README 文件。删除 SparkApplication 将删除与之关联的 Spark 应用程序。如果在删除发生时应用程序正在运行,应用程序将被终止,所有与该应用程序相关联的 Kubernetes 资源将被删除或垃圾回收。

更新 SparkApplication

可以使用 kubectl apply -f <更新的 YAML 文件> 命令来更新 SparkApplication。当 SparkApplication 成功更新时,操作员将收到更新后的和旧的 SparkApplication 对象。如果 SparkApplication 的规范已更改,操作员将根据更新后的规范提交应用程序进行运行。如果应用程序当前正在运行,操作员将在提交具有更新规范的新运行之前终止正在运行的应用程序。计划进行工作以增强 SparkApplication 更新的处理方式。例如,如果更改是为了增加执行器实例的数量,而不是杀死当前运行的应用程序并启动新的运行,逐步启动额外的执行器 Pod 是一个更好的用户体验。

检查 SparkApplication

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

配置自动应用重启和故障处理

该操作符支持通过可配置的 RestartPolicy 进行自动应用重启,使用可选字段 .spec.restartPolicy。以下是一个示例 RestartPolicy:

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

有效的restartPolicy类型包括 NeverOnFailureAlways。在应用程序终止后,操作员根据其终止状态和规范中的 RestartPolicy 判断应用程序是否需要重新启动。如果应用程序需要重新启动,操作员通过提交新的运行来重新启动它。对于 OnFailure,操作员进一步支持通过 onFailureRetriesonSubmissionFailureRetries 字段设置重试次数限制。此外,如果尚未达到提交重试次数,操作员会使用线性退避策略重试提交应用程序,间隔由 onFailureRetryIntervalonSubmissionFailureRetryInterval 指定,这对于 OnFailureAlwaysRestartPolicy 都是必需的。如果旧资源如驱动程序pod、ui服务/入口等在提交新运行之前仍然存在,则将其删除,并且提交客户端会创建一个新的驱动程序pod,因此驱动程序有效地被重新启动。

为SparkApplication设置TTL

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

spec:
  timeToLiveSeconds: 3600

请注意,此功能要求启用通知器缓存重新同步,默认情况下,每30秒重新同步一次。您可以通过设置标志 -resync-interval= 来更改重新同步间隔。

反馈

此页面有帮助吗?


Last modified December 26, 2024: 修复了 sparkctl 链接 (#3947) (10ed1cc)