Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

调整映射器

当 Hive 启动 Hadoop 作业时,作业将由一个或多个映射器任务处理。假设您的 DynamoDB 表有足够的吞吐量容量,您可以修改集群中的映射器数量,这样将有可能提高性能。

注意

Hadoop 作业中使用的映射器任务数由输入的拆分数控制,Hadoop 会将数据拆分为多个逻辑块。如果 Hadoop 不执行足够的输入拆分,则您的写入操作可能不会占用 DynamoDB 表中的所有可用写入吞吐量。

增加映射器数量

Amazon EMR 中的每个映射器的最大读取速率为每秒 1 MiB。集群中的映射器数量取决于集群中的节点大小。(有关节点大小和每个节点的映射器数量的信息,请参阅 Amazon EMR 开发人员指南中的任务配置。)

如果您的 DynamoDB 表有足够的读取吞吐容量,您可以通过执行以下操作,尝试增加映射器数量:

  • 增加集群中的节点大小。例如,如果您的集群使用 m1.large 节点 (每个节点三个映射器),您可以尝试升级到 m1.xlarge 节点 (每个节点八个映射器)。

  • 增加集群中的节点数量。例如,如果您拥有 m1.xlarge 节点的三节点集群,则您一共有 24 个可用映射器。如果您将集群大小加倍 (节点类型相同),您将拥有 48 个映射器。

您可以使用 AWS 管理控制台 管理集群中的节点大小或数量。(您可能需要重新启动集群才能使这些更改生效。)

增加映射器数量的另一种方式是修改 mapred.tasktracker.map.tasks.maximum Hadoop 配置参数。(这是 Hadoop 参数,不是 Hive 参数。您不能从命令提示符下交互式修改此参数。)。如果您增加 mapred.tasktracker.map.tasks.maximum 的值,您可以增加映射器的数量,而不增加节点的大小或数量。但是,如果值设置过高,集群节点可能会用尽内存。

在首次启动 Amazon EMR 集群时,作为引导操作,您将设置 mapred.tasktracker.map.tasks.maximum。有关更多信息,请参阅 Amazon EMR 管理指南中的创建引导操作以安装其他软件 (可选)

减少映射器数量

如果使用 SELECT 语句从映射到 DynamoDB 的外部 Hive 表中选择数据,Hadoop 作业可以使用尽可能多的任务,最多达到集群中的映射器数量上限。在这种情况下,长时间运行的 Hive 查询可能会占用 DynamoDB 表的所有预置读取容量,从而对其他用户造成负面影响。

您可以使用 dynamodb.max.map.tasks 参数设置映射任务的数量上限:

Copy
SET dynamodb.max.map.tasks=1

此值必须等于或大于 1。当 Hive 处理您的查询时,生成的 Hadoop 作业从 DynamoDB 表读取数据时,将使用不超过 dynamodb.max.map.tasks 个映射任务。