View a markdown version of this page

Amazon Kinesis Data Streams 的流式传输表和 S3 交付 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

Amazon Kinesis Data Streams 的流式传输表和 S3 交付

借助 Amazon Kinesis Data Streams,您可以将来自 Kinesis 数据流的流数据传输到两种目标类型:Apache Iceberg 上的流式传输表(亚马逊 S3 表)或通用的 Amazon S3 存储桶。您无需管理任何基础架构,只需几分钟即可开始交付。Amazon Kinesis Data Streams 从您的数据流中读取数据、缓冲和聚合记录,然后将其传送到您配置的目的地。交付是完全托管的 — 无需配置连接器、消费者应用程序或计算资源。

在 On-Demand Advantage 或 On-Demand Standard 容量模式下运行的直播支持这些功能。您可以配置直播中的传送并指定目的地。然后,Amazon Kinesis Data Streams 会自动处理扩展、重试和交付可靠性。交付不会消耗直播的读取吞吐量,也不会对现有使用者产生任何影响。

数据交付的工作原理

数据交付通过托管管道将您的 Kinesis 数据流连接到交付目的地:

  1. 您可以在模式下将数据发布到 Kinesis 数据流。 On-Demand

  2. 您可以调用CreateChannel直播并指定目标(Apache Iceberg 上的流式传输表或通用的 Amazon S3 存储桶)。

  3. 交付从流中读取,缓冲记录,并将它们聚合到大小最优的文件中。

  4. 交付将在您指定的数据新鲜度窗口内将文件写入您配置的目的地。

送货目的地

数据传输支持两种目标类型:

在 Apache Iceberg 上直播牌桌

流式传输表会持续将您的 Kinesis 数据流传输到存储在 Amazon S3 表中的 Apache Iceberg 表中。当数据到达时,它会自动转换为经过优化的 Apache Parquet 格式,具有智能内联压缩功能,从而消除了小文件问题并降低了下游查询成本。在数据发布到您的直播后的几分钟内,即可通过亚马逊 Athena、亚马逊 EMR、适用于 Apache Flink 的亚马逊托管服务或任何支持 Apache Iceberg 的引擎进行查询。

通用亚马逊 S3 存储桶

Amazon S3 交付将来自您的 Kinesis 数据流的流数据直接写入 S3 存储桶。记录以其原始源格式交付,不进行任何转换。使用可配置的压缩和通过输出密钥模板定义的 S3 密钥结构,将多个记录缓冲并批处理成大小最优的对象。这非常适合原始日志存档、事件重播和下游批处理等用例,在这些用例中,您需要持久、低成本地存储流数据,而无需管理交付管道的开销。

数据流

下图显示了传送到 Apache Iceberg 上的流式表的端到端数据流。该图以信用卡交易用例为例。生产者根据架构注册表中的 Amazon Glue 架构对记录进行序列化,并将它们写入 Kinesis 数据流。Amazon Kinesis Data Streams 将记录传送到亚马逊 S3 表上的 Apache Iceberg 表。如果您在 S3 表中启用分析集成,则表元数据也会在 Amazon Glue 数据目录中注册;默认情况下不会发生这种情况。然后,交付的数据及其元数据可供分析和人工智能引擎使用,例如亚马逊 Athena、Amazon Redshift 和 Amazon EMR。

向通用型 Amazon S3 存储桶的交付遵循类似的流程,但有两个区别。创建者将记录写入 Kinesis 数据流,然后 Amazon Kinesis Data Streams 将其传输到你的 S3 存储桶。记录以其原始源格式交付,无需转换,因此不需要 Amazon Glue 架构注册表,也不会在数据目录中注册表元 Amazon Glue 数据。Amazon Kinesis Data Streams 将记录缓冲区并批处理成大小最优的对象,并使用您通过输出密钥模板定义的 S3 密钥结构将其写入。然后,交付的对象可用于下游的批处理和分析。

架构图显示了通过 Amazon Glue 架构注册表序列化为Kinesis数据流的信用卡交易记录,这些记录被发送到Amazon S3表上的Apache Iceberg表,元数据已注册在数据目录中 Amazon Glue ,并由包括亚马逊雅典娜、Amazon Redshift和Amazon EMR在内的分析和人工智能引擎使用。

关键功能

数据传输提供以下关键功能:

  • Serverless auto-scaling — 根据您的流吞吐量自动扩展,最高可达流的吞吐量容量。没有可供配置的计算资源。

  • Exactly-once 按分片传送 — 来自分片的记录仅传送到目的地一次,分片内没有重复或遗漏。

  • 近乎实时的交付 — 可配置的数据新鲜度为 5 到 15 分钟(300 到 900 秒)。

  • 自动 Parquet 转换 — 对于 Apache Iceberg 上的流媒体表,可将流媒体记录转换为优化的 Apache Parquet 格式,以实现高效的分析查询

  • 内联压缩-将记录聚合到大小最优的文件中,以提高分析查询性能。

  • 加密-支持客户管理的 Amazon KMS 密钥在目标服务器端加密。 Amazon 托管式密钥 (aws/kinesis别名)不支持目标加密。

  • Dead-letter queu e — 无法传送的记录的故障元数据(包括流 ARN、分片 ID、序列号和错误上下文)被写入死信队列。 S3-based

  • CloudWatch 指标和日志 — 通过 Amazon CloudWatch 指标监控传输的字节数、记录计数和数据新鲜度。启用 Amazon CloudWatch Logs 的传送日志,以捕获配送批次详情、失败和错误背景以进行故障排除。

  • 对@@ 其他使用者没有影响-不消耗增强的扇出插槽或共享吞吐量。

要求

数据传输有以下要求:

  • 您的 Kinesis 数据流必须使用 On-Demand 标准或 On-Demand 优势容量模式。

  • 您必须创建一个 IAM 服务执行角色来授予写入目标的交付权限。

  • 您的目标存储桶或表存储桶必须与您的 Kinesis 数据流位于同一区域。数据传输不支持任何一种目的地类型的跨区域传输。

  • 对于 Apache Iceberg 上的直播表,不支持跨账户传输。源流、目标 S3 表存储桶和 Amazon Glue 架构注册表必须全部位于相同 Amazon Web Services 账户 且相同的区域。

  • 对于一般用途 Amazon S3 存储桶,仅目标存储桶支持跨账户传输。频道及其源流必须相同 Amazon Web Services 账户;只有目标存储桶可以位于不同的账户中。

  • 要在 Apache Iceberg 上直播表,您必须在 Amazon S3 中配置死信队列。