HBase
 sql >> Base de Dados >  >> NoSQL >> HBase

Ajuste de desempenho no MapReduce para melhoria de desempenho


O ajuste de desempenho no Hadoop ajuda a otimizar o desempenho do cluster Hadoop. Neste artigo de ajuste de desempenho do MapReduce, você primeiro explorará as várias maneiras de melhorar o desempenho do cluster do Hadoop e obter os melhores resultados da programação do MapReduce no Hadoop.

Em seguida, o artigo abordará sete maneiras ou conceitos importantes para o ajuste de desempenho do Hadoop MapReduce. Essas maneiras são o ajuste de memória no Hadoop, a melhoria do desempenho de E/S, o derramamento de disco do mapa no Hadoop, o ajuste de tarefas de mapeador e redutor, o combinador de gravação, o uso de junções distorcidas e a execução especulativa.

Essas técnicas podem ser usadas para configurar clusters Hadoop na produção com hardware comum para aprimorar o desempenho com custo operacional mínimo.

Introdução ao ajuste de desempenho do Hadoop MapReduce


Instalar o cluster Hadoop na produção é apenas metade da batalha vencida. Para o administrador do Hadoop, é extremamente importante ajustar a configuração do cluster do Hadoop para obter o máximo desempenho.

O ajuste de desempenho do Hadoop ajuda a otimizar o desempenho do cluster Hadoop e alcançar os melhores resultados ao executar tarefas MapReduce em empresas de Big Data.

Durante a instalação do Hadoop, o cluster do Hadoop é configurado com as configurações padrão.

É muito importante que os administradores do Hadoop estejam familiarizados com as diversas especificações de hardware, como capacidade de RAM, número de discos montados nos DataNodes, número de núcleos de CPU, número de núcleos físicos ou virtuais, placas NIC, etc.

Como tal, não existe uma única técnica de ajuste de desempenho que se adapte a todos os trabalhos do Hadoop, pois é muito difícil obter um equilíbrio entre todos os recursos ao resolver o problema de big data.

Podemos escolher as dicas e truques de ajuste de desempenho com base na quantidade de dados a serem movidos e no tipo de trabalho do Hadoop a ser executado na produção. O ajuste de desempenho melhor e mais eficaz ajuda a alcançar o desempenho máximo.

Para realizar o mesmo, temos que repetir o processo abaixo mencionado até que a saída desejada seja alcançada de maneira ideal.
Executar trabalho –> Identificar gargalo –> Afunilar endereço.

Então, basicamente, para o ajuste de desempenho, temos que primeiro executar o trabalho Hadoop MapReduce, identificar o gargalo e, em seguida, resolver o problema usando os métodos abaixo. Temos que repetir o passo acima até que o nível de desempenho desejado seja alcançado.

Dicas e truques para o ajuste de desempenho do MapReduce


As formas usadas para o ajuste de desempenho do Hadoop MapReduce podem ser categorizadas em duas categorias. Essas duas categorias são:

1. Ajuste de desempenho baseado em parâmetros de tempo de execução do Hadoop

2. Ajuste de desempenho específico do aplicativo Hadoop

Vamos agora discutir como podemos melhorar o desempenho do cluster Hadoop com base nessas duas categorias.

1. Ajuste de desempenho baseado em parâmetros de tempo de execução do Hadoop


Esta categoria trata do ajuste dos parâmetros de tempo de execução do Hadoop, como ajuste do uso da CPU, uso da memória, uso do disco e uso da rede para ajuste de desempenho. As técnicas incluídas nesta categoria são:
a. Ajuste de memória

A etapa mais importante para garantir o desempenho máximo de um trabalho do Hadoop é ajustar os parâmetros de configuração da memória monitorando o uso da memória no servidor.

Cada trabalho MapReduce no Hadoop coleta as informações sobre os vários registros de entrada lidos, número de registros redutores, número de registros em pipeline para execução posterior, memória de troca, conjunto de tamanho de heap, etc.

As tarefas do Hadoop geralmente não são vinculadas à CPU. Portanto, a principal preocupação é otimizar o uso de memória e os derrames de disco.

A melhor regra para ajuste de memória para maximizar o desempenho é garantir que as tarefas MapReduce não acionem a troca. Isso significa usar o máximo de memória possível sem acionar a troca.

Softwares como Cloudera Manager, Nagios ou Ganglia podem ser usados ​​para monitorar o uso da memória swap.

Sempre que houver uma grande utilização de memória de troca, o uso de memória deve ser otimizado configurando o mapred.child.java.opts reduzindo a quantidade de RAM alocada para cada tarefa no mapred.child.java.opts .

Podemos ajustar a memória para a tarefa definindo o mapred.child.java.opts para -Xmx2048M em um mapred-site.xml.
b. Minimize o derramamento do disco do mapa

Disk IO é o gargalo de desempenho no Apache Hadoop. Havia muitos parâmetros que podemos ajustar para minimizar o derramamento. Podemos ajustar os parâmetros como:
  • Compressão da saída do mapeador
  • Certifique-se de que o mapeador use 70% da memória heap para o buffer de derramamento.

Mas você acha que derramar com frequência é realmente uma boa ideia?

É altamente recomendável que você não derrame mais de uma vez porque, se derramarmos uma vez, precisaremos reler e reescrever todos os dados:3x o IO.
c. Ajustando as tarefas do mapeador

Podemos definir implicitamente o número de tarefas de mapa. A maneira mais comum e eficaz de ajustar o desempenho do Hadoop para o mapeador é controlar a quantidade de mapeadores e o tamanho de cada tarefa.

Ao lidar com os arquivos grandes, a estrutura divide o arquivo em partes menores para que o mapeador possa executá-lo em paralelo. No entanto, a inicialização de um novo trabalho de mapeador geralmente leva alguns segundos, o que também é uma sobrecarga e deve ser minimizado. Portanto, as sugestões para o mesmo são:
  • Reutilizar tarefa jvm
  • Aponte para as tarefas do mapa com duração de 1 a 3 minutos cada. Portanto, se o tempo médio de execução do mapeador for inferior a um minuto, aumente o mapred.min.split.size para alocar menos mapeadores no slot e, assim, reduzir a sobrecarga de inicialização do mapeador.
  • Use o formato de entrada Combinar arquivo para vários arquivos menores.

2. Ajuste de desempenho específico do aplicativo Hadoop


As técnicas incluídas nesta categoria são:
a. Minimizando a saída do mapeador

Ao minimizar a saída do mapeador, podemos melhorar o desempenho, pois a saída do mapeador é muito sensível à E/S de disco, E/S de rede e à sensibilidade da memória na fase de embaralhamento. Podemos conseguir isso por:
  • Filtrar os registros no lado do mapeador em vez do lado do redutor.
  • Usar dados mínimos para formar nossa chave e valor de saída do mapeador no MapReduce.
  • Como compactar a saída do mapeador
b. Carregamento do redutor de balanceamento

As tarefas de redução desequilibradas criam problemas de desempenho. Alguns dos redutores pegam a maior parte da saída do mapeador e são executados por muito tempo em comparação com os outros redutores. Podemos equilibrar o carregamento do redutor por:
  • Implementando uma função de hash melhor na classe Partitioner.
  • Escrever um trabalho de pré-processamento para separar chaves usando as várias saídas. Em seguida, use outro trabalho de redução de mapa para processar as chaves especiais que podem causar o problema.
c. Reduza os dados intermediários com o Combiner no Hadoop

Além disso, podemos ajustar o desempenho do cluster Hadoop escrevendo um combinador. O Combiner reduz a quantidade de dados a serem transferidos do mapeador para o redutor. Isso prova ser benéfico, pois reduz o congestionamento da rede.
d. Execução especulativa

O desempenho das tarefas MapReduce é seriamente afetado quando as tarefas demoram mais para terminar sua execução. A execução especulativa no Hadoop é a abordagem comum para resolver esse problema fazendo backup das tarefas lentas nas máquinas alternativas.

Podemos habilitar a execução especulativa definindo os parâmetros de configuração 'mapreduce.map.tasks.speculative.execution' e 'mapreduce.reduce.tasks.speculative.execution' para verdade. Isso reduzirá o tempo de execução do trabalho.

Resumo


Por fim, vimos que o ajuste de desempenho no Hadoop ajuda a otimizar o desempenho do cluster do Hadoop. O artigo explicou várias dicas e truques para ajustar o desempenho do cluster Hadoop.

O artigo destacou alguns dos melhores e mais eficazes truques para maximizar o desempenho.

No entanto, se você tiver alguma dúvida sobre este tópico, sinta-se à vontade para compartilhá-la conosco na seção de comentários.