处理大型记录 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

处理大型记录

Amazon Kinesis Data Streams 支持最大 10 兆MiBs字节 () 的记录。建议使用此功能来处理超过 1 MiB 默认记录大小限制的间歇性数据负载。现有和新建流的默认最大记录大小设置为 1 MiB。

该功能有利于物联网 (IoT) 应用程序、更改数据捕获 (CDC) 管道以及偶尔需要处理较大数据负载的机器学习工作流程。要开始在流中使用大型记录,请更新流的最大记录大小限制。

重要

写入的单个分片吞吐量限制 MB/s 为 1,读取 2 MB/s 的吞吐量限制保持不变,同时支持更大的记录大小。Kinesis Data Streams 旨在容纳间歇性的大型记录,以及小于或等于 1 MiB 的记录基准流量。但并非为适应持续的大容量大型记录摄取而设计。

更新您的流以使用大型记录

使用 Kinesis Data Streams 处理较大记录
  1. 导航到 Kinesis Data Streams 控制台。

  2. 选择您的流,然后前往配置选项卡。

  3. 单击最大记录大小旁边的编辑

  4. 设置最大记录大小(最大值为 10 MiB)。

  5. 保存更改。

此设置仅调整该 Kinesis 数据流的最大记录大小。在添加该限制之前,请验证所有下游应用程序是否能处理较大的记录。

您也可以使用 Amazon CLI 更新此设置:

aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000

使用大型记录优化流性能

建议将大型记录保持在总流量的 2% 以下。流中每个分片的吞吐能力为每秒 1 MiB。为了容纳大型记录,Kinesis 数据流最多可爆发 10 个 MiBs,而平均每秒 1 MiB。这种支持大型记录的能力会持续注入流中。注入速度取决于大型记录的大小和基准记录的大小。为获得最佳效果,请使用均匀分布的分区键。有关 Kinesis 如何按需扩展的更多信息,请参阅按需模式功能和用例

使用大型记录缓解限制

缓解限制
  1. 在创建者应用程序中实现带有指数级退避的重试逻辑。

  2. 使用随机的分区键在可用分片之间分配大型记录。

  3. 对于连续的大型记录流,将有效负载存储在 Amazon S3 中,仅向流发送元数据引用。有关更多信息,请参阅使用 Amazon Kinesis Data Streams 处理大型记录

使用 Kinesis Data Streams 处理大型记录 APIs

大型记录支持引入了一个新的 API,并更新了两个现有的控制平面 APIs 以处理最多 10 个记录 MiBs。

用于修改记录大小的 API:

  • UpdateMaxRecordSize:为现有直播配置最大记录大小限制,最多 10 MiBs。

对现有版本的更新 APIs:

  • CreateStream:添加可选 MaxRecordSizeInKiB 参数,用于在创建流期间设置记录大小限制。

  • DescribeStreamSummary:返回 MaxRecordSizeInKiB 字段显示当前的流配置。

所有 APIs 列出的内容都保持了对现有直播的向后兼容性。有关完整的 API 文档,请参阅 Amazon Kinesis Data Streams 服务 API 参考

Amazon 与大型唱片兼容的组件

以下 Amazon 组件与大型唱片兼容:

组件 描述

Amazon SDK

Amazon SDK 支持处理大型记录。您可以使用中的可用方法更新直播的最大记录大小(最多 10 MiB)。 Amazon SDKs有关更多信息,请参阅将此服务与 Amazon SDK 配合使用

Kinesis Consuer Library (KCL)

KCL 从 2.x 版开始支持处理大型记录。要使用大型录制支持,请更新流的 maxRecordSize 并使用 KCL。有关更多信息,请参阅使用 Kinesis Client Library

Kinesis Producer Library (KPL)

KPL 从 1.0.5 版开始支持处理大型记录。要使用大型录制支持,请更新流的 maxRecordSize 并使用 KPL。有关更多信息,请参阅使用 Amazon Kinesis Producer Library (KPL) 开发产生器

Amazon EMR

带有 Apache Spark 的 Amazon EMR 支持处理不超过 Kinesis Data Streams 限制 (10) 的大型记录。 MiBs要使用大型记录支持,请使用 readStream 函数。有关更多信息,请参阅 Amazon EMR 与 Amazon Kinesis 集成

Amazon Data Firehose

与 Kinesis Data Streams 一起使用时,Amazon Data Firehose 处理大型记录的行为取决于传输目的地:

  • Amazon S3:支持传输大型记录,无需任何额外配置。当使用数据格式转换时,Firehose 支持传输大型记录。当使用动态分区时,Firehose 不支持传输大型记录。

  • Lambda:当 Firehose 在下游触发 Lambda 函数时,我们不建议将其与大型记录一起使用。这可能会导致间歇性故障。

  • HTTP:Firehose 不支持传输大型记录。

  • Snowflake:Firehose 不支持传输大型记录。

  • Amazon Redshift:Firehose 不支持传输大型记录。

对于需要向 Snowflake 或 Redshift 传输大型记录的应用程序,请先将数据传输至 Amazon S3。然后使用提取、转换、加载 (ETL) 过程来加载数据。对于所有其他目的地,在扩展到生产使用量之前,请在 proof-of-concept环境中使用大型记录测试行为。大型记录的处理因目的地而不同。

Amazon Lambda

Amazon Lambda 支持最多 6 MiBs 个有效载荷。此限制适用于转换为 base-64 编码的 Kinesis 有效负载,以及与事件源映射 (ESM) 有关的元数据。对于小于 6 的记录 MiBs,Lambda 使用 ESM 处理这些记录,无需额外配置。对于大于 6 的记录 MiBs,Lambda 使用失败时目标对其进行处理。必须使用 ESM 配置失败时的目标,才能处理超出 Lambda 处理限制的记录。发送到失败时的目标的各个事件都是一个 JSON 文档,其中包含有关调用失败的元数据。

无论记录大小如何,都建议在 ESM 中创建一个失败时的目标。这可以确保不会丢弃任何记录。有关更多信息,请参阅配置调用失败时的目标

Amazon Redshift

在从 Kinesis Data Streams 流式传输数据时,Amazon Redshift 仅支持小于 1 MiB 的记录大小。超过此限制的记录将不予处理。未处理的记录记录为 sys_stream_scan_errors。有关更多信息,请参阅 SYS_STREAM_SCAN_ERRORS

Kinesis Data Streams 的 Flink 连接器

使用来自 Kinesis Data Streams 的数据有两种方法:Kinesis 来源连接器以及 Kinesis 接收器连接器。源连接器支持处理小于 1 MiB 和最多 10 MiB 的记录。 MiBs对于大于 1 MiB 的记录,请勿使用接收器连接器。有关更多信息,请参阅使用 API 使用连接器在适用于 Apache Flink 的亚马逊托管服务中 DataStream移动数据

支持大型记录的区域

此 Amazon Kinesis Data Streams 功能仅在 Amazon 以下区域可用:

Amazon 区域 区域名称

eu-north-1

欧洲地区(斯德哥尔摩)

me-south-1

中东(巴林)

ap-south-1

亚太地区(孟买)

eu-west-3

欧洲地区(巴黎)

ap-southeast-3

亚太地区(雅加达)

us-east-2

美国东部(俄亥俄州)

af-south-1

非洲(开普敦)

eu-west-1

欧洲地区(爱尔兰)

me-central-1

中东(阿联酋)

eu-central-1

欧洲地区(法兰克福)

sa-east-1

南美洲(圣保罗)

ap-east-1

亚太地区(香港)

ap-south-2

亚太地区(海得拉巴)

us-east-1

美国东部(弗吉尼亚州北部)

ap-northeast-2

亚太地区(首尔)

ap-northeast-3

亚太地区(大阪)

eu-west-2

欧洲地区(伦敦)

ap-southeast-4

亚太地区(墨尔本)

ap-northeast-1

亚太地区(东京)

us-west-2

美国西部(俄勒冈州)

us-west-1

美国西部(北加利福尼亚)

ap-southeast-1

亚太地区(新加坡)

ap-southeast-2

亚太地区(悉尼)

il-central-1

以色列(特拉维夫)

ca-central-1

加拿大(中部)

ca-west-1

加拿大西部(卡尔加里)

eu-south-2

欧洲地区(西班牙)

cn-northwest-1

中国(宁夏)

eu-central-2

欧洲(苏黎世)

us-gov-east-1

Amazon GovCloud (美国东部)

us-gov-west-1

Amazon GovCloud (美国西部)