应用程序问题 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

应用程序问题

本节包含针对 Kinesis Data Analytics 应用程序可能遇到的错误情况的解决方案。

应用程序陷入暂时状态

如果你的应用程序保持暂时状态 (STARTINGUPDATINGSTOPPING,或者AUTOSCALING),你可以通过使用StopApplication使用Force参数设置为true. 你不能强制停止在DELETING状态。或者,如果应用程序位于UPDATING要么AUTOSCALING状态,您可以将其回滚到以前正在运行的版本。回滚应用程序时,它会从上次成功的快照加载状态数据。如果应用程序没有快照,Kinesis Data Analytics 会拒绝回滚请求。有关回滚应用程序的更多信息,请参阅RollbackApplicationaction.

注意

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

导致应用程序停滞的原因包括:

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

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

  • 应用程序快照创建失败:在以下期间,Kinesis Data Analytics 拍摄应用程序的快照UpdateApplication要么StopApplication请求. 然后,该服务使用此快照状态,并使用更新的应用程序配置还原应用程序以提供恰好一次处理语义。如果自动创建快照失败,请参阅创建快照失败以下。

  • 从快照还原失败:如果在应用程序更新中删除或更改一个操作符并尝试从快照中还原,默认情况下,如果快照包含缺少的操作符的状态数据,还原将失败。此外,应用程序将停滞在STOPPED要么UPDATING状态。要更改此行为并允许恢复成功,请更改AllowNonRestoredState应用程序的参数FlinkRun配置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 分钟以上,导致 Flink 就业创造在 Kinesis Data Analytics 端超时。我们建议你检查 FlinkJobManager日志以及应用程序代码,以查看是否在main此方法是预期的。如果没有,你需要采取措施解决问题,以便在 5 分钟内完成。

您可以使用以下任一方式检查申请状态。ListApplications或者DescribeApplication行动。

创建快照失败

在以下情况下,Kinesis Data Analytics 服务无法拍摄快照:

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

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

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

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

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

如果应用程序的操作员没有正确配置,快照可能会失败。有关调整操作员绩效的信息,请参阅运营商扩展.

在应用程序恢复正常状态后,我们建议您设置应用程序的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.

应用程序处于运行状态但没有处理数据

您可以使用以下任一方式检查申请状态。ListApplications或者DescribeApplication行动。如果你的应用程序进入RUNNING状态但没有将数据写入到接收器,您可以添加亚马逊以解决该问题。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 控制台中完成此操作,也可以使用SnapshotsEnabledUpdate的参数UpdateApplicationaction.

  • 调查无法创建快照的原因。有关更多信息,请参阅 应用程序陷入暂时状态

  • 在应用程序恢复正常状态时重新启用快照。

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