来自 Kinesis 数据流的上游或源限制 - Managed Service for Apache Flink

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

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

来自 Kinesis 数据流的上游或源限制

症状:应用程序遇到LimitExceededExceptions来自其上游源 Kinesis 数据流的问题。

潜在原因:Apache Flink 库 Kinesis 连接器的默认设置设置为从 Kinesis 数据流源读取,对于每次调用获取的最大记录数,默认设置非常激进。GetRecords默认情况下,Apache Flink 配置为每次GetRecords调用获取 10,000 条记录(默认情况下,此调用每 200 毫秒进行一次),尽管每个分片的限制只有 1,000 条记录。

当尝试从 Kinesis 数据流中使用时,此默认行为可能会导致限制,从而影响应用程序的性能和稳定性。

您可以通过检查 CloudWatch ReadProvisionedThroughputExceeded指标并查看该指标大于零的长期或持续时间来确认这一点。

通过观察持续LimitExceededException存在的错误,您还可以在适用于 Apache Flink 的亚马逊托管服务 Flink 应用程序的 CloudWatch 日志中看到这一点。

解决方案:您可以执行以下两项操作之一来解决此情况:

  • 降低每次GetRecords呼叫提取的记录数量的默认限制

  • 在适用于 Apache Flink 的亚马逊托管服务中启用自适应读取。有关自适应读取功能的更多信息,请参阅SHARD_USE_ADAPTIVE_READS