Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

什么是 Amazon Kinesis Data Streams?

使用 Amazon Kinesis Data Streams 实时收集和处理大数据记录

您将创建称为 Amazon Kinesis Data Streams application 的数据处理应用程序。典型的 Amazon Kinesis Data Streams application 以数据记录的方式从 Kinesis data stream 读取数据。这些应用程序可使用 Kinesis Client Library,并且可在 Amazon EC2 实例上运行。处理后的记录可发送到控制面板、用于生成警报、动态更改定价和广告战略或向其他各种 AWS 服务发送数据。有关 Kinesis Data Streams 功能和定价的信息,请参阅 Amazon Kinesis Data Streams

Kinesis Data Streams 和 Amazon Kinesis Data Firehose 均是 Kinesis 流处理数据平台的一部分。有关更多信息,请参阅 Amazon Kinesis Data Firehose 开发者指南。有关 AWS 大数据解决方案的更多信息,请参阅大数据。有关 AWS 流数据解决方案的更多信息,请参阅什么是流数据?

Kinesis Data Streams 可以用来做什么?

您可以将 Kinesis Data Streams 用于快速而持续的数据引入和聚合。使用的数据类型包括 IT 基础设施日志数据、应用程序日志、社交媒体、市场数据源和 Web 点击流数据。由于数据引入和处理的响应时间是实时的,因此处理通常是轻量级的。

以下是使用 Kinesis Data Streams 的典型场景:

加速的日志和数据源引入和处理

您可以让创建器直接将数据推入流。例如,推送系统和应用程序日志,它们可在几秒内就绪,以用于处理。这可以防止因前端或应用程序服务器失败而造成日志数据丢失。Kinesis Data Streams 提供加速的数据源引入,因为您在提交数据以备引入之前,未在服务器上批处理数据。

实时指标和报告

您可以使用收集到 Kinesis Data Streams 中的数据进行实时的简单数据分析和报告。例如,您的数据处理应用程序可以处理系统和应用程序日志的指标和报告,因为数据将流入而不是等待接收批量数据。

实时数据分析

这可将并行处理的强大功能与实时数据的价值相结合。例如,实时处理网站点击流,然后使用多个并行运行的不同的 Kinesis Data Streams 应用程序来分析站点可用性参与度。

复杂流处理

您可以创建 Amazon Kinesis Data Streams application 和数据流的有向无环图 (DAG)。这通常会涉及将数据从多个 Amazon Kinesis Data Streams application 放入其他流,以供其他 Amazon Kinesis Data Streams application 进行下游处理。

使用 Kinesis Data Streams 的好处

虽然可使用 Kinesis Data Streams 解决各种流数据问题,但其常见用途是实时聚合数据,然后将聚合数据上传到数据仓库或 map-reduce 集群。

将数据放入 Kinesis data stream,这可确保持久性和弹性。将记录放入流的时间与可检索记录的时间之间的延迟 (put-to-get 延迟) 通常少于 1 秒 – 换言之,在添加数据后,Amazon Kinesis Data Streams application 几乎立即可以开始使用流中的数据。Kinesis Data Streams 的托管服务方面可减轻您创建和运行数据引入管道的操作负担。您可以创建流式处理 map-reduce 类型应用程序,并且 Kinesis Data Streams 的弹性允许您扩大或缩小流,这样您绝不会在数据记录过期前丢失它们。

多个 Amazon Kinesis Data Streams application 可使用流中的数据,以便多个操作(如存档和处理)可以同时单独进行。例如,两个应用程序可读取同一流中的数据。第一个应用程序计算正在运行的聚合并更新 DynamoDB 表,第二个应用程序压缩数据并将数据存档至数据存储(如 Amazon S3)。然后,控制面板将读取带正在运行的聚合的 DynamoDB 表以获取实时报告(分钟级)。

Kinesis Client Library 支持容错使用流中的数据,并提供针对 Amazon Kinesis Data Streams application 的扩展支持。

有关如何使用 Amazon EMR 集群直接读取和处理 Kinesis data stream 的示例,请参阅 Amazon EMR 开发人员指南 中的分析 Kinesis Data Streams 数据