Throughput provisionado de DynamoDB - Amazon DynamoDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Throughput provisionado de DynamoDB

Quando você emite instruções HiveQL na tabela externa do DynamoDB, a classe DynamoDBStorageHandler faz as solicitações de API de baixo nível do DynamoDB apropriadas, as quais consomem throughput provisionado. Se não houver capacidade de leitura ou gravação suficiente na tabela do DynamoDB, a solicitação será limitada, o que resultará em baixa performance do HiveQL. Por esse motivo, você deve garantir que a tabela tenha capacidade de throughput suficiente.

Por exemplo, suponha que você provisionou 100 unidades de capacidade de leitura para sua tabela do DynamoDB. Isso permitirá que você leia 409.600 bytes por segundo (100 × tamanho da unidade de capacidade de leitura de 4 KB). Agora, suponha que a tabela contenha 20 GB de dados (21.474.836.480 bytes) e você deseja usar a instrução SELECT para selecionar todos os dados usando HiveQL. Você pode estimar quanto tempo a consulta levará para ser executada desta forma:

21.474.836.480/409.600 = 52.429 segundos = 14,56 horas

Nesse cenário, a tabela do DynamoDB é um gargalo. Ela não ajudará a adicionar mais nós do Amazon EMR, pois o throughput do Hive é limitado a apenas 409.600 bytes por segundo. A única maneira de reduzir o tempo necessário para a instrução SELECT é aumentar a capacidade de leitura provisionada da tabela do DynamoDB.

Você pode executar um cálculo semelhante para estimar a quantidade de tempo necessária para a carga de grandes volumes de dados em uma tabela externa do Hive mapeada para uma tabela do DynamoDB. Determine o número total de unidades de capacidade de gravação necessárias por item (menos de 1 KB = 1, 1-2 KB = 2 etc.) e multiplique pelo número de itens a serem carregados. Isso fornecerá o número de unidades de capacidade de gravação exigidas. Divida esse número pelo número de unidades de capacidade de gravação que são alocadas por segundo. Isso resultará no número de segundos necessários para carregar a tabela.

Você deve monitorar regularmente as métricas do CloudWatch da sua tabela. Para obter uma visão geral rápida no console do DynamoDB, escolha sua tabela e, em seguida, selecione a guia Metrics (Métricas). Aqui, você pode visualizar as unidades de capacidade de leitura e gravação consumidas e as solicitações que foram limitadas.

Capacidade de leitura

O Amazon EMR gerencia a carga de solicitação em sua tabela do DynamoDB de acordo com as configurações de throughput provisionado. No entanto, se você perceber um grande número de mensagens ProvisionedThroughputExceeded na saída do trabalho, poderá ajustar a taxa de leitura padrão. Para fazer isso, você pode modificar a variável de configuração dynamodb.throughput.read.percent. Você pode usar o comando SET para definir essa variável no prompt de comando do Hive.

SET dynamodb.throughput.read.percent=1.0;

Esta variável persiste apenas durante a sessão atual do Hive. Se você sair do Hive e retornar mais tarde, dynamodb.throughput.read.percent retornará para o seu valor padrão.

O valor de dynamodb.throughput.read.percent pode variar entre 0.1 e 1.5. 0.5 representa a taxa de leitura padrão, o que significa que o Hive tentará consumir metade da capacidade de leitura da tabela. Se você aumentar o valor acima de 0.5, o Hive aumentará a taxa de solicitação; diminuir o valor abaixo de 0.5 reduz a taxa de solicitação de leitura. (A taxa de leitura real poderá variar, dependendo de fatores como se há uma distribuição de chaves uniformes na tabela do DynamoDB.)

Se você notar que o Hive está esgotando frequentemente a capacidade de leitura provisionada da tabela ou se o controle de utilização de solicitações de leitura estiver sendo aplicado com muita frequência, tente reduzir dynamodb.throughput.read.percent para menos de 0.5. Se você tiver capacidade de leitura suficiente e quiser operações HiveQL mais responsivas, defina o valor acima de 0.5.

Capacidade de gravação

O Amazon EMR gerencia a carga de solicitação em sua tabela do DynamoDB de acordo com as configurações de throughput provisionado. No entanto, se você perceber um grande número de mensagens ProvisionedThroughputExceeded na saída do trabalho, poderá ajustar a taxa de gravação padrão. Para fazer isso, você pode modificar a variável de configuração dynamodb.throughput.write.percent. Você pode usar o comando SET para definir essa variável no prompt de comando do Hive.

SET dynamodb.throughput.write.percent=1.0;

Esta variável persiste apenas durante a sessão atual do Hive. Se você sair do Hive e retornar mais tarde, dynamodb.throughput.write.percent retornará para o seu valor padrão.

O valor de dynamodb.throughput.write.percent pode variar entre 0.1 e 1.5. 0.5 representa a taxa de gravação padrão, o que significa que o Hive tentará consumir metade da capacidade de gravação da tabela. Se você aumentar o valor acima de 0.5, o Hive aumentará a taxa de solicitação. Diminuir o valor abaixo de 0.5 reduz a taxa de solicitação de gravação. (A taxa de gravação real poderá variar dependendo de fatores como a existência de uma distribuição de chaves uniformes na tabela do DynamoDB.)

Se você notar que o Hive está esgotando frequentemente a capacidade de leitura provisionada da tabela ou se o controle de utilização de solicitações de gravação estiver sendo aplicado com muita frequência, tente reduzir dynamodb.throughput.write.percent para menos de 0.5. Se você tiver capacidade suficiente na tabela e quiser operações HiveQL mais responsivas, defina o valor acima de 0.5.

Ao gravar dados no DynamoDB usando o Hive, certifique-se de que o número de unidades de capacidade de gravação seja maior do que o número de mapeadores no cluster. Por exemplo, considere um cluster do Amazon EMR que consiste em 10 nós m1.xlarge. O tipo de nó m1.xlarge fornece 8 tarefas de mapeador. Assim, o cluster teria um total de 80 mapeadores (10 × 8). Se a sua tabela do DynamoDB tiver menos de 80 unidades de capacidade de gravação, uma operação de gravação do Hive poderia consumir todo o throughput de gravação dessa tabela.

Para determinar o número de mapeadores dos tipos de nó do Amazon EMR, consulte Configuração da tarefa no Guia do desenvolvedor do Amazon EMR.

Para obter mais informações sobre mapeadores, consulte Ajustar mapeadores.