维护与故障排除 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

维护与故障排除

以下各部分将概述如何维护长时间运行的 Flink 作业,并就如何排查一些常见问题提供指导。

Flink 应用程序通常设计为长时间运行,例如运行数周、数月甚至数年。与所有长期运行的服务一样,Flink 流式处理应用程序需要维护。这包括错误修复、改进与迁移到更高版本的 Flink 集群。

FlinkDeploymentFlinkSessionJob 资源的规范发生变化时,您需要升级正在运行的应用程序。为此,操作员停止正在运行的作业(除非已暂停),并使用最新的规范重新部署该作业,而对于有状态的应用程序,使用上次运行的状态。

用户可以通过 JobSpecupgradeMode 设置来控制如何在有状态的应用程序停止和恢复时管理状态。

可选介绍

无状态

无状态应用程序从空白状态升级。

上次的状态

在任何应用程序状态(即使是失败的作业)下快速升级都不需要运行状况正常的作业,因为它总是使用最新的成功检查点。如果 HA 元数据丢失,可能需要进行手动恢复。要限制在选取最新检查点时作业可能回退的时间,您可以配置 kubernetes.operator.job.upgrade.last-state.max.allowed.checkpoint.age。如果检查点早于配置的值,则将改为使用保存点来处理运行正常的作业。会话模式下,不支持此功能。

保存点

使用保存点进行升级,以提供最大的安全性,以及用作备份/分叉点的可能性。升级过程中,将创建保存点。请注意,需要运行 Flink 作业才能创建保存点。如果作业处于不健康状态,则将使用最后一个检查点(除非 kubernetes.operator.job.upgrade)。 last-state-fallback.enabled 设置为 false)。如果最后一个检查点不可用,则作业升级将失败。

本部分介绍如何对 Amazon EMR on EKS 的问题进行故障排除。有关如何排查一般性 Amazon EMR 问题的信息,请参阅《Amazon EMR 管理指南》中的 集群问题排查

安装 Helm 图表时未找到资源映射

安装 Helm 图表时可能会遇到以下错误消息。

Error: INSTALLATION FAILED: pulling from host 1234567890.dkr.ecr.us-west-2.amazonaws.com failed with status code [manifests 6.13.0]: 403 Forbidden Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "flink-operator-serving-cert" namespace: "<the namespace to install your operator>" from "": no matches for kind "Certificate" in version "cert-manager.io/v1" ensure CRDs are installed first, resource mapping not found for name: "flink-operator-selfsigned-issuer" namespace: "<the namespace to install your operator>" " from "": no matches for kind "Issuer" in version "cert-manager.io/v1" ensure CRDs are installed first].

要解决此错误,请安装 cert-manager 以允许添加 Webhook 组件。您必须在您使用的每个 Amazon EKS 集群中分别安装 cert-manager。

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0

如果遇到 access denied 错误,请确认 Helm 图表文件 values.yamloperatorExecutionRoleArn 的 IAM 角色是否具有正确的权限。此外,请确保 FlinkDeployment 规范中 executionRoleArn 下的 IAM 角色具有正确的权限。

如果您的 FlinkDeployment 卡在“被囚禁”状态,请按照以下步骤强制删除部署:

  1. 编辑部署运行。

    kubectl edit -n Flink Namespace flinkdeployments/App Name
  2. 移除此终结器。

    finalizers: - flinkdeployments.flink.apache.org/finalizer
  3. 删除部署。

    kubectl delete -n Flink Namespace flinkdeployments/App Name