本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Kinesis
亚马逊EMR集群可以使用 Hadoop 生态系统中熟悉的工具(例如 Hive、Pig、Hadoop Streaming 和 Cascading)直接读取和处理 Amazon Kinesis 流。 MapReduce API您还可以将来自 Amazon Kinesis 的实时数据与亚马逊 S3、亚马逊 DynamoDB 和正在运行的集群中的现有数据合并。HDFS您可以直接将数据从亚马逊加载到 Amazon S3 或 DynamoDB EMR 以进行后期处理活动。有关 Amazon Kinesis 服务亮点和定价的信息,请参阅 Amazon Kinesis
我能用亚马逊EMR和亚马逊 Kinesis 的集成做什么?
亚马逊EMR和亚马逊 Kinesis 之间的集成使某些场景变得更加容易;例如:
-
流式处理日志分析 – 您可以分析流式处理 Web 日志,以便每隔几分钟按区域、浏览器和访问域生成前 10 个错误类型的列表。
-
客户参与 – 您可以编写查询将 Amazon Kinesis 中的点击流数据与存储在 DynamoDB 表中的广告活动信息进行连接,以确定显示在特定网站上的最有效广告类别。
-
临时交互式查询 — 您可以定期将数据从 Amazon Kinesis 流加载到本地 Impala 表中,HDFS并以本地 Impala 表的形式提供,以进行快速、交互式的分析查询。
对 Amazon Kinesis 流进行检查点分析
用户可以定期对 Amazon Kinesis 流进行批量分析,这些分析称为迭代。由于 Amazon Kinesis 流数据记录是使用序列号检索的,因此迭代边界由亚马逊EMR存储在 DynamoDB 表中的起始和结束序列号来定义。例如,当 iteration0
结束时,它在 DynamoDB 中存储结束序列号,这样在 iteration1
作业开始时,它可以检索流的后续数据。迭代在流数据中的这种映射称为检查点操作。有关更多信息,请参阅 Kinesis 连接器
如果对迭代进行了检查但任务未能处理迭代,则 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 D IOPS ynamoDB 表的预配置建议
适用于 Amazon Kinesis 的亚马逊EMR连接器使用 DynamoDB 数据库作为检查点元数据的支持。您必须在 DynamoDB 中创建表,然后才能按检查点间隔使用亚马逊集群的 Amazon Kinesis 流中的数据。EMR该表必须与您的 Amazon EMR 集群位于同一区域。以下是IOPS您应为 DynamoDB 表预配置的数量的一般建议;j
假设可以同时运行的 Hadoop 任务的最大数量(具有不同的逻辑名称+迭代号组合),s
并且是任何任务将处理的最大分片数:
对于 Read Capacity Units:j
*s
/5
对于 Write Capacity Units:j
*s
性能注意事项
Amazon Kinesis 分片吞吐量与亚马逊EMR集群中节点的实例大小和流中记录的大小成正比。建议在主节点和核心节点上使用 m5.xlarge 或更大的实例。
与亚马逊一起安排亚马逊 Kinesis 分析 EMR
如果要对活动 Amazon Kinesis 流分析数据,由于任何迭代都受超时和最长持续时间限制,您应经常运行分析,以便从流定期收集详细信息,这十分重要。可以通过多种方式定期执行该类脚本和查询;但建议针对此类周期性任务使用 AWS Data Pipeline 。有关更多信息,请参阅AWS Data Pipeline 开发人员指南AWS Data Pipeline HiveActivity中的AWS Data Pipeline PigActivity和。