Habilitar despejos de heap para serviços Apache Hadoop no HDInsight baseado em Linux
Os despejos de pilha contêm um instantâneo da memória do aplicativo, incluindo os valores das variáveis no momento em que o despejo foi criado. Portanto, eles são úteis para diagnosticar problemas que ocorrem em tempo de execução.
Serviços
Você pode habilitar despejos de pilha para os seguintes serviços:
- Apache hcatalog - tempelton
- Apache hive - hiveserver2, metastore, derbyserver
- MapReduce - JobHistoryServer
- Apache yarn - resourcemanager, nodemanager, timelineserver
- Apache hdfs - datanode, secondarynamenode, namenode
Você também pode habilitar despejos de pilha para o mapa e reduzir os processos executados pelo HDInsight.
Noções básicas sobre a configuração do despejo de pilha
Os despejos de heap são habilitados passando opções (às vezes conhecidas como opts ou parâmetros) para a JVM quando um serviço é iniciado. Para a maioria dos serviços Apache Hadoop , você pode modificar o shell script usado para iniciar o serviço para passar essas opções.
Em cada script, há uma exportação para *_OPTS, que contém as opções passadas para a JVM. Por exemplo, no script hadoop-env.sh , a linha que começa com export HADOOP_NAMENODE_OPTS=
contém as opções para o serviço NameNode.
Os processos de mapeamento e redução são ligeiramente diferentes, pois essas operações são um processo filho do serviço MapReduce. Cada processo de mapeamento ou redução é executado em um contêiner filho e há duas entradas que contêm as opções da JVM. Ambos contidos em mapred-site.xml:
- mapreduce.admin.map.child.java.opts
- mapreduce.admin.reduce.child.java.opts
Nota
Recomendamos o uso do Apache Ambari para modificar os scripts e as configurações de mapred-site.xml, pois o Ambari manipula a replicação de alterações entre nós no cluster. Consulte a seção Usando o Apache Ambari para obter etapas específicas.
Ativar capturas de área dinâmica para dados
A opção a seguir habilita despejos de pilha quando ocorre um OutOfMemoryError:
-XX:+HeapDumpOnOutOfMemoryError
O + indica que esta opção está ativada. Por predefinição, a opção está desativada.
Aviso
Os despejos de pilha não estão habilitados para serviços Hadoop no HDInsight por padrão, pois os arquivos de despejo podem ser grandes. Se você habilitá-los para solução de problemas, lembre-se de desativá-los depois de reproduzir o problema e reunir os arquivos de despejo.
Local do despejo
O local padrão para o arquivo de despejo é o diretório de trabalho atual. Você pode controlar onde o arquivo é armazenado usando a seguinte opção:
-XX:HeapDumpPath=/path
Por exemplo, o uso -XX:HeapDumpPath=/tmp
faz com que os dumps sejam armazenados no diretório /tmp.
Scripts
Você também pode acionar um script quando ocorre um OutOfMemoryError . Por exemplo, acionar uma notificação para que você saiba que o erro ocorreu. Use a seguinte opção para disparar um script em um OutOfMemoryError:
-XX:OnOutOfMemoryError=/path/to/script
Nota
Como o Apache Hadoop é um sistema distribuído, qualquer script usado deve ser colocado em todos os nós do cluster em que o serviço é executado.
O script também deve estar em um local acessível pela conta em que o serviço é executado e deve fornecer permissões de execução. Por exemplo, você pode querer armazenar scripts e /usr/local/bin
usá-los chmod go+rx /usr/local/bin/filename.sh
para conceder permissões de leitura e execução.
Usando o Apache Ambari
Para modificar a configuração de um serviço, use as seguintes etapas:
Em um navegador da Web, navegue até
https://CLUSTERNAME.azurehdinsight.net
, ondeCLUSTERNAME
é o nome do cluster.Usando a lista de à esquerda, selecione a área de serviço que deseja modificar. Por exemplo, HDFS. Na área central, selecione a guia Configurações .
Usando a entrada Filter... , insira opts. Apenas os itens que contêm este texto são exibidos.
Encontre a entrada *_OPTS para o serviço para o qual você deseja habilitar despejos de pilha e adicione as opções que deseja habilitar. Na imagem a seguir, adicionei
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/
à entrada HADOOP_NAMENODE_OPTS :Nota
Ao habilitar despejos de pilha para o mapa ou reduzir o processo filho, procure os campos chamados mapreduce.admin.map.child.java.opts e mapreduce.admin.reduce.child.java.opts.
Use o botão Salvar para salvar as alterações. Você pode inserir uma breve nota descrevendo as alterações.
Depois que as alterações forem aplicadas, o ícone Reiniciar necessário aparecerá ao lado de um ou mais serviços.
Selecione cada serviço que precisa ser reiniciado e use o botão Ações de serviço para ativar o modo de manutenção. O modo de manutenção impede que alertas sejam gerados a partir do serviço quando você o reinicia.
Depois de ativar o modo de manutenção, use o botão Reiniciar para que o serviço reinicie tudo efetuado
Nota
As entradas para o botão Reiniciar podem ser diferentes para outros serviços.
Depois que os serviços forem reiniciados, use o botão Ações de serviço para desativar o modo de manutenção. Este Ambari para retomar o monitoramento de alertas para o serviço.