Amazon Kinesis Data Streams 入门

开始使用

Amazon Kinesis Data Streams 是一种可大规模扩展、高度持久的数据摄取和处理服务,针对流式传输数据进行了优化。您可以配置数以万计的数据创建器,连续不断地将数据传输到 Kinesis 数据流。数据将在几毫秒内传输到您的 Amazon Kinesis 应用程序,这些应用程序将按生成顺序接收数据记录。

Amazon Kinesis Data Streams 与多项 AWS 服务集成,其中包括以近乎实时的方式转换流数据并将其传输到 Amazon S3 等数据湖的 Amazon Kinesis Data Firehose、用于托管流处理的适用于 Apache Flink 的亚马逊托管服务、用于事件或记录处理的 AWS Lambda、用于私有连接的 AWS PrivateLink、用于指标和日志处理的 Amazon Cloudwatch 以及用于服务器端加密的 AWS KMS

Amazon Kinesis Data Streams 被用作大数据解决方案的网关。不同来源中的数据被传输到 Amazon Kinesis 流中,然后流中的数据再被不同的 Amazon Kinesis 应用程序使用。在此示例中,一个应用程序(显示为黄色)正在对流数据运行实时控制面板。另一个应用程序(显示为红色)执行简单的聚合并将处理后的数据发给 Amazon S3。Amazon S3 中的数据将获得进一步处理并储存在 Amazon Redshift 中,以便进行复杂分析。第三个应用程序(显示为绿色)将原始数据传送到 Amazon S3,之后这些数据还会存档到 Amazon Glacier,以实现低成本的长期存储。请注意,全部三条数据处理管道是同时并行工作的。

开始使用 Amazon Kinesis Data Streams

参阅有关 Amazon Kinesis Data Streams 的最新资讯

请求为您的概念验证或评估提供支持

视频

使用 Kinesis Data Streams

注册 Amazon Web Services 后,可按以下步骤使用 Amazon Kinesis Data Streams:

重要概念

数据创建器是一种应用程序,它通常会将生成的数据记录传送到 Kinesis 数据流。数据创建器可以为记录分配分区键。分区键最终决定哪个分区为数据流提取数据记录。

数据使用器是一种分布式 Kinesis 应用程序或 AWS 服务,流中所有分区生成数据时,它进行检索。大多数数据使用器会检索分区中的最新数据,以支持实时分析或数据处理。

数据流是分区的逻辑分组。数据流中的分片数量没有限制(如果需要更多分片,您可以请求提高限制)。数据流将默认保留数据 24 小时,也可以选择保留长达 365 天。

分区是 Amazon Kinesis 数据流的基本吞吐量单位。

  • 分区是一种仅附加日志和流功能的单位。分区包含按到达时间排序的有序记录序列。
  • 一个分区每秒可以提取多达 1000 个数据记录,或每秒可以提取 1MB 数据。添加更多分区可以提高提取能力。
  • 使用 AWS 管理控制台、UpdateShardCount API,在数据吞吐量发生变化时动态添加或删除流中的分片。通过 AWS Lambda 或使用自动扩展实用工具触发自动扩缩。
  • 当使用器使用增强型扇出时,一个分区可以为每个注册使用增强型扇出的数据使用器提供每秒 1MB 的数据输入和每秒 2MB 的数据输出。
  • 当使用器不使用增强型扇出时,分区提供每秒 1MB 的输入和每秒 2MB 的数据输出,并且这些使用器将与不使用增强型扇出的任何使用器共享此输出。
  • 创建流时,您需要指定所需的分区数量,您可以随时更改该数量。例如,您可以创建具有两个分区的流。如果您有 5 个使用增强型扇出的数据使用器,此流可提供每秒高达 20MB 的总数据输出(2 个分区 x 2MB/秒 x 5 个数据使用器)。如果数据使用器没有使用增强型扇出,此流的吞吐量为每秒 2MB 的数据输入和每秒 4MB 的数据输出。在所有情况下,此流允许每秒最多 2000 个 PUT 记录或每秒 2MB 的数据摄入(以先达到的限制为准)。
  • 您可以监控 Amazon Kinesis Data Streams 中的分区级指标。

记录是存储在 Amazon Kinesis 流中的数据单元。记录由序列号、分区键和数据块组成。数据块是您的数据创建器添加到流中的重要数据。数据块的最大尺寸(Base64 编码前的数据有效载荷)是 1 兆字节 (MB)。

分区键通常是有意义的标识符,例如用户 ID 或时间戳。它由数据创建器在将数据传输到 Amazon Kinesis 数据流时指定,它对使用器很有用,因为使用器可以使用分区键重播或构建与分区键关联的历史记录。分区键还可以用于隔离数据记录并将其路由到不同的流分区。例如,假定您的 Amazon Kinesis 数据流具有两个分区(分区 1 和分区 2)。您可以将数据创建器配置为使用两个分区键(键 A 和键 B),以将所有带键 A 的数据记录输入分片 1,同时将所有带键 B 的数据记录输入分片 2。

序列号是每个数据记录的唯一标识符。当数据创建器调用 PutRecordPutRecords API 以向 Amazon Kinesis 数据流添加数据时,Amazon Kinesis Data Streams 会分配序列号。同一分区键的序列号通常会随时间变化增加;PutRecord 或 PutRecords 请求之间的时间段越长,序列号则越大。

将数据传输到流中

数据创建器可通过 Amazon Kinesis Data Streams API、Amazon Kinesis Producer Library(KPL)或 Amazon Kinesis Agent 将数据传输到 Amazon Kinesis 数据流。

使用 Amazon Kinesis Data Generator 将示例数据传输到 Kinesis 数据流或 Kinesis 数据消防站。

Amazon Kinesis Data Streams 提供了两个将数据传输到 Amazon Kinesis 流的 API:PutRecordPutRecords。PutRecord 支持 API 调用中的一条数据记录,PutRecords 支持 API 调用中的多条数据记录。

Amazon Kinesis Producer Library(KPL)是一个易于使用且高度可配置的程序库,可以帮助您把数据放到 Amazon Kinesis 数据流中。Amazon Kinesis Producer Library (KPL) 具有一个简单可靠的异步界面,使您能够快速使用最少客户资源实现较高的创建器吞吐量。

Amazon Kinesis Agent 是一款预构建的 Java 应用程序,可提供简单的方法来收集数据并将其发送到 Amazon Kinesis 流。您可以在基于 Linux 的服务器环境(如 Web 服务器、日志服务器和数据库服务器)上安装此代理。此代理监控特定文件,并持续将数据发送到流。

运行应用程序或自行构建应用程序

使用 AWS 服务运行完全托管的流处理应用程序,或自行构建。

Amazon Kinesis Data Firehose 是将流数据可靠地转换和加载到数据存储和分析工具中的最简单方法。您可以使用 Kinesis 数据流作为 Kinesis 数据消防站的来源。

借助适用于 Apache Flink 的亚马逊托管服务,您可以轻松查询流数据或使用 Apache Flink 构建串流应用程序,从而获得切实可行的见解并及时响应您的业务和客户需求。您可以将 Kinesis 数据流用作适用于 Apache Flink 的亚马逊托管服务应用程序的来源和目标。

您可以订阅 Lambda 函数以自动读取 Kinesis 数据流中的记录。 AWS Lambda 通常用于逐个记录(也称为基于事件)的流处理。

Amazon Kinesis 客户端库(KCL)是一个预构建的库,可帮助您轻松构建 Amazon Kinesis 应用程序,用以读取和处理来自 Amazon Kinesis 数据流的数据。KCL 可以处理各种复杂的问题,如适应流量的变化、均衡流数据负载、协调分布式服务以及以容错方式处理数据。KCL 可让您在构建 Amazon Kinesis 应用程序时专注于业务逻辑。 从 KCL 2.0 开始,您可以利用低延迟 HTTP/2 流 API 和增强的扇出功能来从流中检索数据。

Amazon Kinesis Connector Library 是一个预构建库,可帮助您轻松完成 Amazon Kinesis 与其他 AWS 服务和第三方工具的集成。使用 Amazon Kinesis 连接器库需要 Amazon Kinesis Client Library (KCL)。该库的最新版本为 Amazon DynamoDBAmazon RedshiftAmazon S3Amazon Elasticsearch Service 提供了连接器。该库还包括各种类型的示例连接件,并有 Apache Ant 来构建运行示例的文件。

Amazon Kinesis Storm Spout 是一个预建库,可帮助您轻松将 Amazon Kinesis Data Streams 与 Apache Storm 集成。最新版本的 Amazon Kinesis Storm Spout 从 Kinesis 数据流获取数据,再作为元组发出。您将此 spout 添加到 Storm 拓扑中,以将 Amazon Kinesis Data Streams 作为一种可靠、可扩展、流捕获、存储以及重播服务来使用。

管理流

通过创建 VPC 终端节点,您可以从 Amazon Virtual Private Cloud (VPC) 对 Kinesis Data Streams API 进行私有访问。借助 VPC 终端节点,VPC 和 Kinesis Data Streams 之间的路由可由 AWS 网络处理,而无需使用互联网网关、NAT 网关或 VPN 连接。Kinesis Data Streams 使用的最新一代 VPC 终端节点由 AWS PrivateLink 提供支持。AWS PrivateLink 是一种通过使用 VPC 中带有私有 IP 的弹性网络接口 (ENI) 来支持各 AWS 服务之间的私有连接的技术。有关 PrivateLink 的更多信息,请参阅 AWS PrivateLink 文档

增强型扇出让客户能够增加并行地从流中读取数据的使用器数量,同时保持高性能。您可以使用增强型扇出和 HTTP/2 数据检索 API 将数据扇出到多个应用程序,通常在到达后 70 毫秒内。

您可采用服务器端加密或客户端加密,对传输到 Kinesis Data Streams 的数据进行加密。 服务器端加密是一项完全托管的功能,可在您向数据流传输数据和从中提取数据时自动对数据进行加密和解密。或者,您也可以先在客户端加密数据,再将其传输到数据流。如需了解更多信息,请参阅 Kinesis Data Streams 常见问题的安全部分。

使用数据流作为 Kinesis Data Firehose 的来源,以在将数据传输到 S3、Redshift、Elasticsearch 和 Splunk 时即时转换数据。附加适用于 Apache Flink 的亚马逊托管服务应用程序,使用标准 SQL 实时处理流数据,而无需学习新的编程语言或处理框架。

Amazon Kinesis Data Streams 与 Amazon CloudWatch 集成,以便您可以轻松为 Amazon Kinesis 数据流以及其中的分片收集、查看和分析 CloudWatch 指标。有关 Amazon Kinesis Data Streams 指标的更多信息,请参阅利用 Amazon CloudWatch 监控 Amazon Kinesis

Amazon Kinesis Data Streams 与 AWS Identity and Access Management(IAM)服务集成,后者让您能够安全控制对 AWS 产品和用户资源的访问权限。例如,您可以创建仅允许特定用户或组将数据传输到 Amazon Kinesis 数据流的策略。有关 Amazon Kinesis 数据流的访问管理和控制的更多信息,请参阅使用 IAM 控制对 Amazon Kinesis 资源的访问

Amazon Kinesis Data Streams 与 AWS CloudTrail 服务集成,后者可记录您账户的 AWS API 调用并向您提供日志文件。有关 API 调用日志记录和支持的 Amazon Kinesis API 列表的更多信息,请参阅使用 AWS CloudTrail 记录 Amazon Kinesis API 调用

您可以标记 Amazon Kinesis 数据流,从而更加轻松地管理资源和成本。标签是以键值对表示的用户定义的标记,有助于组织 AWS 资源。例如,您可以使用成本中心标记 Amazon Kinesis 数据流,从而基于成本中心对 Amazon Kinesis Data Streams 成本进行分类和跟踪。有关更多信息,请参阅为您在 Amazon Kinesis Data Streams 中的流加标签

教程

本教程将带您一步步学习如何创建 Amazon Kinesis 数据流,向流中发送模拟股票交易数据,以及编写应用程序处理数据流中的数据。 

精选演示文稿

精选解决方案

适用于 Amazon Kinesis 的 AWS 流式传输数据解决方案提供了多种 AWS CloudFormation 模板;数据在模板中流经生成器、流式存储、使用者和目的地。为支持多种使用案例和业务需求,此解决方案提供了四种 Amazon CloudFormation 模板。这些模板已配置为应用最佳实践,从而可使用控制面板和警报来监控功能是否正常以及保护数据。