本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
应用程序问题
本节包含针对 Kinesis Data Analytics 应用程序可能遇到的错误情况的解决方案。
主题
应用程序停滞在暂时状态
如果您的应用程序处于暂时状态 (STARTING、UPDATING、STOPPING,或者AUTOSCALING),您可以使用停止您的应用程序StopApplication动作Forceparameter settrue. 你不能强制停止中的应用程序DELETINGstatus 或者,如果应用程序位于UPDATING要么AUTOSCALINGstatus,则可以将其回滚到之前运行的版本。回滚应用程序时,它会从上次成功的快照中加载状态数据。如果应用程序没有快照,Kinesis Data Analytics 会拒绝回滚请求。有关还原应用程序的更多信息,请参阅RollbackApplicationaction.
强制停止应用程序可能会导致数据丢失或重复。为防止应用程序重启期间数据丢失或重复处理数据,我们建议您频繁拍摄应用程序快照。
应用程序停滞的原因包括:
-
应用程序状态过大:如果应用程序状态过大或过于持久,可能会导致应用程序在执行检查点或快照操作期间停滞。检查应用程序的
lastCheckpointDuration和lastCheckpointSize值稳步增加或值异常高的指标。 -
应用程序代码过大:确认应用程序 JAR 文件小于 512 MB。不支持超过 512 MB 的 JAR 文件。
-
应用程序快照创建失败:Kinesis Data Analytics 在应用程序的第一个版本期间拍摄应用程序的快照
UpdateApplication要么StopApplication请求. 然后,该服务使用此快照状态,并使用更新的应用程序配置还原应用程序以提供恰好一次处理语义。如果自动快照创建失败,请参阅快照创建失败以下。 -
从快照还原失败:如果在应用程序更新中删除或更改一个操作符并尝试从快照中还原,默认情况下,如果快照包含缺少的操作符的状态数据,还原将失败。此外,应用程序将停滞在任一
STOPPED要么UPDATINGstatus 要更改此行为并允许恢复成功,请将AllowNonRestoredState应用程序的参数FlinkRunConfiguration到true. 这样,恢复操作就可以跳过无法映射到新程序的状态数据。 -
应用程序初始化需要更长的时间:Kinesis Data Analytics 在等待 Flink 作业启动时使用 5 分钟的内部超时时间(软设置)。如果您的作业未能在此超时时间内启动,您将看到 CloudWatch 日志如下所示:
Flink job did not start within a total timeout of 5 minutes for application: %s under account: %s如果你遇到上述错误,则意味着你的操作在 Flink 作业的定义下
main方法耗时超过 5 分钟,导致 Kinesis Data Analytics 端的 Flink 作业创建超时。我们建议你查看 FlinkJobManager日志以及您的应用程序代码,以查看此延迟是否在main方法是预期方法。如果没有,则需要采取措施解决问题,以便在不到5分钟的时间内完成。
您可以使用以下任一方式检查应用程序状态ListApplications或者DescribeApplication行动。
快照创建失败
在以下情况下,Kinesis Data Analytics 服务无法拍摄快照:
应用程序超过快照限制。快照限制为 1,000 个。有关更多信息,请参阅 快照。
应用程序无权访问其源或接收器。
应用程序代码无法正常工作。
应用程序遇到其他配置问题。
如果在应用程序更新期间拍摄快照或停止应用程序时遇到异常,请设置SnapshotsEnabled你的应用程序的财产ApplicationSnapshotConfiguration到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 写入到 Amazon S3 存储桶,我们建议使用 Kinesis Data Firehose。有关将 Kinesis Data Firehose 用于Kinesis Data Analytics 的更多信息,请参阅Kinesis Data Firehose.
应用程序处于 RUNNING 状态但未处理数据
您可以使用以下任一选项检查应用程序状态ListApplications或者DescribeApplication行动。如果您的应用程序进入RUNNINGstatus,但没有将数据写入到接收器,您可以通过添加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 Kinesis Data Analytics console or by updating the ApplicationSnapshotConfiguration through the Amazon SDK
在应用程序无法创建快照时,将会出现该错误。
如果在快照操作期间或创建快照的操作期间遇到该错误,请执行以下操作:
-
为应用程序禁用快照。您可以在 Kinesis Data Analytics 控制台中执行此操作,也可以使用
SnapshotsEnabledUpdateparameterUpdateApplicationaction. -
调查无法创建快照的原因。有关更多信息,请参阅 应用程序停滞在暂时状态。
-
在应用程序恢复正常状态时,重新启用快照。
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