本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理大型记录
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 处理较大记录
导航到 Kinesis Data Streams 控制台。
选择您的流,然后前往配置选项卡。
单击最大记录大小旁边的编辑。
设置最大记录大小(最大值为 10 MiB)。
保存更改。
此设置仅调整该 Kinesis 数据流的最大记录大小。在添加该限制之前,请验证所有下游应用程序是否能处理较大的记录。
您也可以使用 AWS 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 如何按需扩展的更多信息,请参阅按需模式功能和用例。
使用大型记录缓解限制
缓解限制
在创建者应用程序中实现带有指数级退避的重试逻辑。
使用随机的分区键在可用分片之间分配大型记录。
对于连续的大型记录流,将有效负载存储在 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 参考。
AWS 与大型唱片兼容的组件
以下 AWS 组件与大型唱片兼容:
| 组件 | 描述 |
|---|---|
|
AWS SDK |
AWS SDK 支持处理大型记录。您可以使用中的可用方法更新直播的最大记录大小(最多 10 MiB)。 AWS SDKs有关更多信息,请参阅将此服务与 AWS SDK 配合使用。 |
|
Kinesis Consuer Library (KCL) |
KCL 从 2.x 版开始支持处理大型记录。要使用大型录制支持,请更新流的 |
|
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要使用大型记录支持,请使用 |
|
Amazon Data Firehose |
与 Kinesis Data Streams 一起使用时,Amazon Data Firehose 处理大型记录的行为取决于传输目的地: 对于需要向 Snowflake 或 Redshift 传输大型记录的应用程序,请先将数据传输至 Amazon S3。然后使用提取、转换、加载 (ETL) 过程来加载数据。对于所有其他目的地,在扩展到生产使用量之前,请在 proof-of-concept环境中使用大型记录测试行为。大型记录的处理因目的地而不同。 |
|
AWS Lambda |
AWS 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 的记录大小。超过此限制的记录将不予处理。未处理的记录记录为 |
|
Kinesis Data Streams 的 Flink 连接器 |
使用来自 Kinesis Data Streams 的数据有两种方法:Kinesis 来源连接器以及 Kinesis 接收器连接器。源连接器支持处理小于 1 MiB 和最多 10 MiB 的记录。 MiBs对于大于 1 MiB 的记录,请勿使用接收器连接器。有关更多信息,请参阅使用 API 使用连接器在适用于 Apache Flink 的亚马逊托管服务中 DataStream移动数据。 |
支持大型记录的区域
此 Amazon Kinesis Data Streams 功能仅在 AWS 以下区域可用:
| AWS 区域 | 区域名称 |
|---|---|
|
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 | AWS GovCloud (美国东部) |
| us-gov-west-1 | AWS GovCloud (美国西部) |