Diretrizes de ajuste de desempenho para o Hive no HDInsight e Azure Data Lake Storage Gen1

As configurações padrão foram definidas para fornecer bom desempenho em muitos casos de uso diferentes. Para consultas intensivas de E/S, o Hive pode ser ajustado para obter um melhor desempenho com Azure Data Lake Storage Gen1.

Pré-requisitos

Parâmetros

Aqui estão as configurações mais importantes para melhorar o desempenho do Data Lake Storage Gen1:

  • hive.tez.container.size – a quantidade de memória usada por cada uma das tarefas

  • tez.grouping.min-size – tamanho mínimo de cada mapeador

  • tez.grouping.max-size – tamanho máximo de cada mapeador

  • hive.exec.reducer.bytes.per.reducer – tamanho de cada redutor

hive.tez.container.size — o tamanho do contêiner determina quanto de memória está disponível para cada tarefa. Essa é a entrada principal para controlar a simultaneidade no Hive.

tez.grouping.min-size – esse parâmetro permite definir o tamanho mínimo de cada mapeador. Se o número de mapeadores que o Tez escolher for menor que o valor desse parâmetro, o Tez usará o valor definido aqui.

tez.grouping.max-size – o parâmetro permite definir o tamanho máximo de cada mapeador. Se o número de mapeadores que o Tez escolher for maior que o valor desse parâmetro, o Tez usará o valor definido aqui.

hive.exec.reducer.bytes.per.reducer – esse parâmetro define o tamanho de cada redutor. Por padrão, o tamanho de cada redutor é de 256 MB.

Diretrizes

Definir hive.exec.reducer.bytes.per.reducer – o valor padrão funciona bem quando os dados são descompactados. Para dados compactados, você deve reduzir o tamanho do redutor.

Definir hive.tez.container.size – em cada nó, a memória é especificada por yarn.nodemanager.resource.memory-mb e deve ser corretamente definida no cluster HDI por padrão. Para obter informações adicionais sobre como definir a memória adequada no YARN, confira esta postagem.

As cargas de trabalho que usam muita E/S podem se beneficiar de mais paralelismo reduzindo o tamanho do contêiner do Tez. Isso proporciona ao usuário mais contêineres, o que aumenta a simultaneidade. No entanto, algumas consultas do Hive exigem uma quantidade significativa de memória (por exemplo, MapJoin). Se a tarefa não tiver memória suficiente, você receberá uma exceção de falta de memória durante o runtime. Se você receber sem exceções de falta de memória, será preciso aumentá-la.

O número simultâneo de tarefas em execução ou de paralelismo será limitado pela memória YARN total. O número de contêineres YARN ditará quantas tarefas simultâneas podem ser executadas. Para localizar a memória YARN por nó, você pode ir para o Ambari. Navegue até o YARN e veja a guia Configurações. A memória YARN é exibida nessa janela.

Memória YARN total = nós * memória YARN por nó Número de contêineres YARN = Memória YARN total / tamanho do contêiner Tez

A chave para melhorar o desempenho usando o Data Lake Storage Gen1 é aumentar a simultaneidade o máximo possível. O Tez calcula automaticamente o número de tarefas que devem ser criadas, de modo que você não precisa defini-lo.

Exemplo de cálculo

Digamos que você tenha um cluster D14 de 8 nós.

Memória YARN total = nós * memória YARN por nó Memória YARN total = 8 nós * 96 GB = 768 GB Número de contêineres YARN = 768GB / 3072MB = 256

Limitações

Limitação do data Lake armazenamento Gen1

Se você atingir os limites de largura de banda fornecidos pelo Data Lake Storage Gen1, começará a ver falhas de tarefas. Isso poderia ser identificado observando os erros de limitação nos logs de tarefa. Você pode reduzir o paralelismo aumentando o tamanho do contêiner Tez. Se precisar de mais simultaneidade para seu trabalho, entre em contato conosco.

Para verificar se há problemas de limitação, você precisa habilitar o log de depuração no lado do cliente. Veja como fazer isso:

  1. Coloque a propriedade a seguir as propriedades de log4j na configuração do Hive. Isso pode ser feito no modo de exibição do Ambari: log4j.logger.com.microsoft.azure.datalake.store=DEBUG Reinicie todos os nós/serviços para que a configuração entre em vigor.

  2. Se o problema for de limitação, você verá o código de erro HTTP 429 no arquivo de log do Hive. O arquivo de log do Hive está em /tmp/<usuário>/hive.log

Mais informações sobre o ajuste do Hive

Veja a seguir alguns blogs que ajudarão a ajustar as consultas do Hive: