Kinesis - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Kinesis

Amazon EMR 集群可以使用 Hadoop 生态系统中的熟悉工具(如 Hive、Pig、MapReduce、Hadoop Streaming API 和 Cascading)直接读取和处理 Amazon Kinesis 流。您还可以将 Amazon Kinesis 中的实时数据与正在运行的群集中 Amazon S3、Amazon DynamoDB 和 HDFS 上的现有数据进行联接。您可以直接将数据从 Amazon EMR 加载到 Amazon S3 或 DynamoDB 以进行后处理。有关 Amazon Kinesis 服务亮点和定价的详细信息,请参阅Amazon Kinesis

我可以使用 Amazon EMR 和 Amazon Kinesis 集成执行哪些操作?

亚马逊 EMR 与亚 Amazon Kinesis 之间的集成使某些方案更简单,例如:

  • 流式传输日志分析-您可以分析流式处理 Web 日志,以便每隔几分钟按区域、浏览器和访问域生成前 10 个错误类型的列表。

  • 客户互动您可以编写查询将 Amazon Kinesis 中的点击流数据与 DynamoDB 表中存储的广告活动信息联接在一起,以确定显示在特定网站上的最有效广告类别。

  • 临时交互式查询您可以定期将 Amazon Kinesis 流中的数据加载到 HDFS 中,并以本地 Impala 表的形式提供数据,以进行快速的交互式分析查询。

Amazon Kinesis 流的检查点分析

用户可以定期对 Amazon Kinesis 流进行批量分析,这些分析称为迭代。因为使用序列号检索 Amazon Kinesis 流数据记录,所以,可通过 Amazon EMR 在 DynamoDB 表中存储的开始和结束序列号来定义迭代边界。例如,当iteration0结束时,它将结束序列号存储在 DynamoDB 中,这样当iteration1作业开始时,它可以从流中检索后续数据。迭代在流数据中的这种映射称为检查点操作。有关更多信息,请参阅 。Kinesis 连接器

如果对迭代进行了检查点操作且任务未能处理某个迭代,则当数据记录未达到 Amazon Kinesis 流的 24 小时限制时,Amazon EMR 会尝试重新处理该迭代中的记录。

通过检查点功能,您可以:

  • 从运行于相同的流和逻辑名称之上的前一个查询处理的序列号之后,开始数据处理

  • 重新处理中由之前的查询处理的 Kinesis 中的同一批数据

要启用检查点操作,请在脚本中将 kinesis.checkpoint.enabled 参数设置为 true。此外,请配置以下参数:

配置设置 描述
kinesis.checkpoint.metastore.table.name 用于存储检查点信息的 DynamoDB 表名称
kinesis.checkpoint.metastore.hash.key.name DynamoDB 表的哈希键名称
kinesis.checkpoint.metastore.hash.range.name DynamoDB 表的范围键名称
kinesis.checkpoint.logical.name 当前处理的逻辑名称
kinesis.checkpoint.iteration.no 与逻辑名称关联的处理的迭代编号
kinesis.rerun.iteration.without.wait 用来指示是否可以重新运行失败的迭代而不等待超时的布尔值;默认值为 false

针对 Amazon DynamoDB 表的预配置 IOPS 建议

用于 Amazon Kinesis 的 Amazon EMR 连接器使用 DynamoDB 数据库作为对元数据进行检查点操作的支持。必须先在 DynamoDB 中创建表,才能以检查点时间间隔使用 Amazon EMR 群集的 Amazon Kinesis 流中的数据。该表必须与 Amazon EMR 集群位于相同区域中。以下是关于您应该为 DynamoDB 表预配置的 IOPS 数量的一般建议;j是可同时运行的最大 Hadoop 任务数(具有不同的逻辑名称 + 迭代编号组合)。s是任何作业将处理的最大分片数:

对于 Read Capacity Unitsj*s/5

对于 Write Capacity Unitsj*s

性能注意事项

Amazon Kinesis 分区吞吐量与 Amazon EMR 群集中节点的实例大小以及流中的记录大小成正比。建议在主节点和核心节点上使用 m5.xlarge 或更大的实例。

使用亚马逊 EMR 安排 Amazon Kinesis 分析

当您分析活动的 Amazon Kinesis 流上的数据(受超时和任何迭代的最长持续时间限制)时,您应经常运行分析,以便从流定期收集详细信息,这十分重要。可以通过多种方式定期执行该类脚本和查询;但建议针对此类周期性任务使用 Amazon Data Pipeline。有关更多信息,请参阅 。Amazon Data PipelinePigActivityAmazon Data PipelineHiveActivity中的Amazon Data Pipeline开发人员指南