Ajustar mapeadores - Amazon DynamoDB

Ajustar mapeadores

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

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 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 AWS Management Console 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 no Guia de gerenciamento do Amazon EMR.

Diminuir o número de mapeadores

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.