

# Ajustar mapeadores
<a name="EMRforDynamoDB.PerformanceTuning.Mappers"></a>

Quando o Hive inicia um trabalho do Hadoop, esse trabalho é processado por uma ou mais tarefas do mapeador. Supondo que a tabela do DynamoDB tenha capacidade de throughput suficiente, é possível modificar o número de mapeadores no cluster, o que melhora potencialmente a performance.

**nota**  
O número de tarefas do mapeador usadas em um trabalho do Hadoop é influenciado pelas *divisões de entrada*, onde o Hadoop subdivide os dados em blocos lógicos. Se o Hadoop não realizar divisões de entrada suficientes, as operações de gravação poderão não ser capazes de consumir todo o throughput de gravação disponível na tabela do DynamoDB. 

## Aumentar o número de mapeadores
<a name="EMRforDynamoDB.PerformanceTuning.Mappers.Increasing"></a>

Cada mapeador em um Amazon EMR tem uma taxa máxima de leitura de 1 MiB por segundo. O número de mapeadores em um cluster depende do tamanho dos nós no cluster. (Para obter informações sobre tamanhos de nó e o nome de mapeadores por nó, consulte [Configuração da tarefa](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hadoop-task-config.html) no *Guia do desenvolvedor do Amazon EMR*.)

Se a tabela do DynamoDB possuir ampla capacidade de throughput para leituras, você poderá tentar aumentar o número de mapeadores executando um dos procedimentos a seguir:
+ Aumentar o tamanho dos nós no cluster. Por exemplo, se o cluster estiver usando nós *m1.large* (três mapeadores por nó), você pode tentar atualizar para os nós *m1.xlarge* (oito mapeadores por nó).
+ Aumentar o número de nós no cluster. Por exemplo, caso possua um cluster de três nós *m1.xlarge*, você terá um total de 24 mapeadores disponíveis. Se você dobrar o tamanho do cluster, com o mesmo tipo de nó, terá 48 mapeadores.

É possível usar o Console de gerenciamento da AWS para gerenciar o tamanho ou o número de nós em seu cluster. (Você pode precisar reiniciar o cluster para que essas alterações entrem em vigor.)

Outra forma de aumentar o número de mapeadores é modificar o parâmetro de configuração do Hadoop `mapred.tasktracker.map.tasks.maximum`. (Este é um parâmetro do Hadoop, e não um parâmetro do Hive. Não é possível modificá-lo interativamente a partir do prompt de comando.). Caso aumente o valor de `mapred.tasktracker.map.tasks.maximum`, você poderá aumentar o número de mapeadores sem aumentar o tamanho e o número de nós. No entanto, é possível que os nós do cluster fiquem sem memória se você definir o valor muito alto.

Você define o valor para `mapred.tasktracker.map.tasks.maximum` como uma ação de bootstrap ao iniciar o primeiro cluster do Amazon EMR. Para obter mais informações, consulte [(Opcional) Criar ações de bootstrap para instalar software adicional](https://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-plan-bootstrap.html) no *Guia de gerenciamento do Amazon EMR*.

## Diminuir o número de mapeadores
<a name="EMRforDynamoDB.PerformanceTuning.Mappers.Decreasing"></a>

Se você usar a instrução `SELECT` para selecionar dados de uma tabela externa do Hive mapeada no DynamoDB, o trabalho do Hadoop poderá usar quantas tarefas forem necessárias, até o número máximo de mapeadores no cluster. Nesse cenário, é possível que uma consulta do Hive de longa duração possa consumir toda a capacidade de leitura provisionada da tabela do DynamoDB, afetando negativamente outros usuários.

Você pode usar o parâmetro `dynamodb.max.map.tasks` para definir um limite superior para mapear tarefas:

```
SET dynamodb.max.map.tasks=1
```

Esse valor deve ser igual ou maior que 1. Quando o Hive processa sua consulta, o trabalho do Hadoop resultante não usa mais do que `dynamodb.max.map.tasks` ao ler a tabela do DynamoDB.