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

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

应用程序问题

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

应用程序停留在临时状态

如果您的应用程序保持临时状态(STARTINGUPDATINGSTOPPING、或AUTOSCALING),则可以使用Force参数设置为的StopApplication操作来停止应用程序true。您无法强制停止处于该DELETING状态的应用程序。或者,如果应用程序处于UPDATINGAUTOSCALING状态,则可以将其回滚到之前的运行版本。回滚应用程序时,它会加载上次成功快照中的状态数据。如果应用程序没有快照,Kinesis Data Analytics 会拒绝回滚请求。有关回滚应用程序的更多信息,请参阅RollbackApplication操作。

注意

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

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

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

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

  • 应用程序快照创建失败:Kinesis Data Analytics 在UpdateApplicationStopApplication请求期间拍摄应用程序快照。然后,该服务使用此快照状态并使用更新的应用程序配置恢复应用程序,以提供完全一次的处理语义。如果自动快照创建失败,请参见创建快照失败下文。

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

  • 应用程序初始化需要更长的时间: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 端创建超时。我们建议您查看 Flink JobManager日志和应用程序代码,看看该main方法的延迟是否在预料之中。如果不是,则需要采取措施解决问题,以便在 5 分钟内完成。

您可以使用ListApplicationsDescribeApplication操作检查您的申请状态。

创建快照失败

在以下情况下,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 3 时数据丢失

使用 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 状态但未处理数据

您可以使用ListApplicationsDescribeApplication操作来检查您的申请状态。如果您的应用程序进入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参数来执行此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