Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
应用程序问题
本节包含 Managed Service for Apache Flink 应用程序中可能遇到的错误情况的解决方案。
主题
应用程序停留在临时状态
如果您的应用程序处于临时状态(STARTING
UPDATING
、STOPPING
、或AUTOSCALING
),则可以使用Force
参数设置为的StopApplication操作来停止应用程序true
。您不能强制停止处于该DELETING
状态的应用程序。或者,如果应用程序处于UPDATING
或AUTOSCALING
状态,则可以将其回滚到之前运行的版本。回滚应用程序时,它会从上次成功的快照中加载状态数据。如果应用程序没有快照,则 Managed Service for Apache Flink会拒绝回滚请求。有关回滚应用程序的更多信息,请参阅RollbackApplication操作。
注意
强制停止应用程序可能会导致数据丢失或重复。为了防止在应用程序重启期间丢失数据或重复处理数据,我们建议您经常为应用程序拍摄快照。
应用程序卡住的原因包括:
-
应用程序状态太大:应用程序状态过大或过于持久可能会导致应用程序在检查点或快照操作期间卡住。检查您的应用程序
lastCheckpointDuration
和lastCheckpointSize
指标是否有稳步增加的值或异常高的值。 -
应用程序代码太大:验证应用程序 JAR 文件小于 512 MB。不支持超过 512 MB 的 JAR 文件。
-
应用程序快照创建失败:Managed Service for Apache Flink 在
UpdateApplication
或StopApplication
请求期间拍摄应用程序的快照。然后,服务使用此快照状态并使用更新的应用程序配置恢复应用程序,以提供一次性处理语义。如果自动快照创建失败,请参阅快照创建失败以下内容。 -
从快照恢复失败:如果在应用程序更新中删除或更改一个操作符并尝试从快照中还原,默认情况下,如果快照包含缺少的操作符的状态数据,还原将失败。此外,应用程序将停滞在
STOPPED
或UPDATING
状态。要更改此行为并允许恢复成功,请将应用程序的AllowNonRestoredState参数更改FlinkRunConfiguration为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 分钟内完成。
您可以使用 ListApplications
或 DescribeApplication
操作检查应用程序状态。
快照创建失败
在以下情况下,Managed Service for Apache Flink 无法拍摄快照:
应用程序超过快照限制。快照限制为 1,000 个。有关更多信息,请参阅 快照。
应用程序无权访问其源或接收器。
应用程序代码无法正常工作。
应用程序遇到其他配置问题。
如果在应用程序更新期间或停止应用程序时拍摄快照时遇到异常,请将应用程序的 ApplicationSnapshotConfiguration
属性设置SnapshotsEnabled
为false
,然后重试请求。
如果未正确配置应用程序的操作员,则快照可能会失败。有关调整运算符性能的信息,请参见运算符扩展。
在应用程序恢复正常状态后,我们建议您将应用程序的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 写入亚马逊 S3 存储桶,我们建议使用 Firehose。有关将 Firehose 与适用于 Apache Flink 的托管服务一起使用的更多信息,请参阅。Firehose 水槽
应用程序处于 RUNNING 状态但未处理数据
您可以使用 ListApplications
或 DescribeApplication
操作检查应用程序状态。如果您的应用程序进入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 AWS SDK
在应用程序无法创建快照时,将会出现该错误。
如果在快照操作期间或创建快照的操作期间遇到该错误,请执行以下操作:
-
为应用程序禁用快照。您可以在适用于 Apache Flink 的托管服务控制台中执行此操作,也可以使用操作的
SnapshotsEnabledUpdate
参数来执行此操作。UpdateApplication -
调查无法创建快照的原因。有关更多信息,请参阅 应用程序停留在临时状态。
-
在应用程序恢复正常状态时,重新启用快照。
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