应用程序问题 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

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

应用程序问题

本节包含 Managed Service for Apache Flink 应用程序中可能遇到的错误情况的解决方案。

应用程序停留在临时状态

如果您的应用程序处于暂时状态(STARTINGUPDATINGSTOPPINGAUTOSCALING),您可以使用 停止应用程序 操作并将参数Force设置为 true来停止您的应用程序。您不能强制停止处于该DELETING状态的应用程序。或者,如果应用程序处于UPDATINGAUTOSCALING状态,则可以将其回滚到之前运行的版本。回滚应用程序时,它会从上次成功的快照中加载状态数据。如果应用程序没有快照,则 Managed Service for Apache Flink会拒绝回滚请求。有关回滚应用程序的更多信息,请参阅 RollbackApplication

注意

强制停止应用程序可能会导致数据丢失或重复。为了防止在应用程序重启期间丢失数据或重复处理数据,我们建议您经常为应用程序拍摄快照。

应用程序卡住的原因包括:

  • 应用程序状态太大:应用程序状态过大或过于持久可能会导致应用程序在检查点或快照操作期间卡住。检查您的应用程序lastCheckpointDurationlastCheckpointSize指标是否有稳步增加的值或异常高的值。

  • 应用程序代码太大:验证应用程序 JAR 文件小于 512 MB。不支持超过 512 MB 的 JAR 文件。

  • 应用程序快照创建失败:Managed Service for Apache Flink 在UpdateApplicationStopApplication请求期间拍摄应用程序的快照。然后,服务使用此快照状态并使用更新的应用程序配置恢复应用程序,以提供一次性处理语义。如果自动快照创建失败,请参阅快照创建失败以下内容。

  • 从快照恢复失败:如果在应用程序更新中删除或更改一个操作符并尝试从快照中还原,默认情况下,如果快照包含缺少的操作符的状态数据,还原将失败。此外,应用程序将停滞在 STOPPEDUPDATING 状态。要更改此行为并允许恢复成功,请将应用程序 FlinkRunConfiguration 的 allowNonRestoredState 参数更改为。 true这样,恢复操作就可以跳过无法映射到新程序的状态数据。

  • 应用程序初始化需要更长的时间:Managed Service for Apache Flink 在等待 Flink 任务启动时使用 5 分钟的内部超时(软设置)。如果您的任务未能在此超时时间内启动,您将看到如下所示的 CloudWatch 日志:

    Flink job did not start within a total timeout of 5 minutes for application: %s under account: %s

    如果您遇到上述错误,则表示您在 Flink 任务的main方法下定义的操作花费的时间超过 5 分钟,从而导致 Managed Service for Apache Flink 端的 Flink 任务创建超时。我们建议你查看 Flink JobManager 日志以及你的应用程序代码,看看方法是否会出现main这种延迟。如果没有,则需要采取措施解决问题,以便在 5 分钟内完成。

您可以使用 ListApplicationsDescribeApplication 操作检查应用程序状态。

快照创建失败

在以下情况下,Managed Service for Apache Flink 无法拍摄快照:

  • 应用程序超过快照限制。快照限制为 1,000 个。有关更多信息,请参阅快照

  • 应用程序无权访问其源或接收器。

  • 应用程序代码无法正常工作。

  • 应用程序遇到其他配置问题。

如果在应用程序更新期间或停止应用程序时拍摄快照时遇到异常,请将应用程序的 ApplicationSnapshotConfiguration属性设置SnapshotsEnabledfalse,然后重试请求。

如果未正确配置应用程序的操作员,则快照可能会失败。有关调整运算符性能的信息,请参见运算符扩展

在应用程序恢复正常状态后,我们建议您将应用程序的SnapshotsEnabled 属性设置为 true

无法访问 VPC 中的资源

如果应用程序使用在 Amazon VPC 上运行的 VPC,请执行以下操作以验证应用程序是否有权访问其资源:

  • 检查 CloudWatch 日志以查找以下错误。该错误表明应用程序无法访问 VPC 中的资源:

    org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

    如果看到该错误,请确认正确设置了路由表,并且连接器具有正确的连接设置。

    有关设置和分析 CloudWatch 日志的信息,请参阅日志记录和监控

在写入到 Amazon S3 存储桶时丢失数据

使用 Apache Flink 版本 1.6.2 将输出写入 Amazon S3 存储桶时,可能会发生一些数据丢失。在直接使用 Amazon S3 存储输出时,我们建议使用最新支持的 Apache Flink 版本。要使用 Apache Flink 1.6.2 写入到 Amazon S3 存储桶,我们建议使用 Kinesis Data Firehose。有关将 Kinesis Data Firehose 与 Managed Service for Apache Flink结合使用的更多信息,请参阅Kinesis Data Firehose 接收器

应用程序处于 运行 状态,但未处理数据

您可以使用 ListApplicationsDescribeApplication 操作检查应用程序状态。如果应用程序进入 RUNNING 状态,但没有将数据写入到接收器,您可以在应用程序中添加 Amazon CloudWatch 日志流以解决该问题。有关更多信息,请参阅使用应用程序 CloudWatch 日志记录选项。日志流包含可用于解决应用程序问题的消息。

快照、应用程序更新或应用程序停止错误:InvalidApplicationConfigurationException

在快照操作期间或创建快照的操作(例如更新或停止应用程序)期间,可能会出现类似下面的错误:

An error occurred (InvalidApplicationConfigurationException) when calling the UpdateApplication operation: Failed to take snapshot for the application xxxx at this moment. The application is currently experiencing downtime. Please check the application's CloudWatch metrics or CloudWatch logs for any possible errors and retry the request. You can also retry the request after disabling the snapshots in the Managed Service for Apache Flink console or by updating the ApplicationSnapshotConfiguration through the Amazon SDK

在应用程序无法创建快照时,将会出现该错误。

如果在快照操作期间或创建快照的操作期间遇到该错误,请执行以下操作:

java.nio.file.NoSuchFileException: /usr/local/openjdk-8/lib/security/cacerts

在以前的部署中更新了 SSL 信任存储库位置。请在 ssl.truststore.location 参数中改用以下值:

/usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts