调整映射器 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

调整映射器

Hive 启动 Hadoop 任务后,任务将由一个或多个映射器任务处理。假设 DynamoDB 表具有足够的吞吐量容量,可以修改集群的映射器数量,从而可能提高性能。

注意

Hadoop 任务使用的映射器任务数量受输入拆分影响,其中 Hadoop 将数据细分为逻辑块。如果 Hadoop 未执行足够的输入拆分,则写入操作可能无法占用 DynamoDB 表的所有可用写入吞吐量。

增加映射器数量

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

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

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

  • 增加集群的节点数。例如,如果具有 m1.xlarge 节点的三节点集群,则总共有 24 个可用映射器。如果集群大小翻倍,节点类型不变,则有 48 个映射器。

可以使用 Amazon Web Services Management Console 管理集群的节点大小或数量。(可能需要重启集群才能使这些更改生效。)

增加映射器数量的另一个方法是修改 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 参数设置映射任务的上限:

SET dynamodb.max.map.tasks=1

此值必须等于或大于 1。如果 Hive 处理查询,从 DynamoDB 表读取时生成的 Hadoop 任务将使用不超过 dynamodb.max.map.tasks