Abilitare i dump dell'heap per i servizi Hadoop in HDInsight basato su LinuxEnable heap dumps for Hadoop services on Linux-based HDInsight

I dump dell'heap includono uno snapshot della memoria dell'applicazione, ad esempio i valori delle variabili al momento della creazione del dump.Heap dumps contain a snapshot of the application's memory, including the values of variables at the time the dump was created. Si rivelano quindi utili per diagnosticare i problemi che si verificano in fase di esecuzione.So they are useful for diagnosing problems that occur at run-time.

Importante

I passaggi descritti in questo documento funzionano solo con i cluster HDInsight che usano Linux.The steps in this document only work with HDInsight clusters that use Linux. Linux è l'unico sistema operativo usato in HDInsight versione 3.4 o successiva.Linux is the only operating system used on HDInsight version 3.4 or greater. Per altre informazioni, vedere la sezione relativa al ritiro di HDInsight in Windows.For more information, see HDInsight retirement on Windows.

ServicesServices

È possibile abilitare dump dell'heap per i servizi seguenti:You can enable heap dumps for the following services:

  • hcatalog - tempeltonhcatalog - tempelton
  • hive - hiveserver2, metastore, derbyserverhive - hiveserver2, metastore, derbyserver
  • mapreduce - jobhistoryservermapreduce - jobhistoryserver
  • yarn - resourcemanager, nodemanager, timelineserveryarn - resourcemanager, nodemanager, timelineserver
  • hdfs - datanode, secondarynamenode, namenodehdfs - datanode, secondarynamenode, namenode

È inoltre possibile abilitare dump dell'heap per la mappa e ridurre i processi eseguiti da HDInsight.You can also enable heap dumps for the map and reduce processes ran by HDInsight.

Informazioni sulla configurazione dei dump dell'heapUnderstanding heap dump configuration

I dump dell'heap vengono abilitati mediante il passaggio di opzioni (talvolta noto come parametri) a JVM quando viene avviato un servizio.Heap dumps are enabled by passing options (sometimes known as opts, or parameters) to the JVM when a service is started. Per la maggior parte dei servizi Hadoop è possibile modificare lo script della shell usato per avviare il servizio per passare queste opzioni.For most Hadoop services, you can modify the shell script used to start the service to pass these options.

In ogni script è presente un'esportazione per *_OPTS, che contiene le opzioni passate a JVM.In each script, there is an export for *_OPTS, which contains the options passed to the JVM. Ad esempio, nello script hadoop-env.sh, la riga che inizia con export HADOOP_NAMENODE_OPTS= contiene le opzioni per il servizio NameNode.For example, in the hadoop-env.sh script, the line that begins with export HADOOP_NAMENODE_OPTS= contains the options for the NameNode service.

I processi di mapping e riduzione sono leggermente diversi, in quanto queste operazioni sono processi figlio del servizio MapReduce.Map and reduce processes are slightly different, as these operations are a child process of the MapReduce service. Ogni processo di mapping o riduzione viene eseguito in un contenitore figlio e ci sono due elementi che contengono le opzioni di JVM.Each map or reduce process runs in a child container, and there are two entries that contain the JVM options. Entrambi sono contenuti in mapred-site.xml:Both contained in mapred-site.xml:

  • mapreduce.admin.map.child.java.optsmapreduce.admin.map.child.java.opts
  • mapreduce.admin.reduce.child.java.optsmapreduce.admin.reduce.child.java.opts

Nota

È consigliabile usare Ambari per modificare gli script e le impostazioni di mapred-site.xml, in quanto Ambari gestisce la replica delle modifiche tra i nodi del cluster.We recommend using Ambari to modify both the scripts and mapred-site.xml settings, as Ambari handle replicating changes across nodes in the cluster. Per i passaggi specifici, vedere la sezione Uso di Ambari .See the Using Ambari section for specific steps.

Abilitare i dump dell'heapEnable heap dumps

L'opzione seguente abilita il dump dell'heap quando si verifica un OutOfMemoryError:The following option enables heap dumps when an OutOfMemoryError occurs:

-XX:+HeapDumpOnOutOfMemoryError

+ indica che l'opzione è abilitata.The + indicates that this option is enabled. L'impostazione predefinita è disabilitata.The default is disabled.

Avviso

I dump dell'heap non sono abilitati per i servizi Hadoop in HDInsight per impostazione predefinita, perché i file di dump possono essere di grandi dimensioni.Heap dumps are not enabled for Hadoop services on HDInsight by default, as the dump files can be large. Se li si abilita per la risoluzione dei problemi, ricordarsi di disabilitarli dopo aver riprodotto il problema e raccolto i file di dump.If you do enable them for troubleshooting, remember to disable them once you have reproduced the problem and gathered the dump files.

Percorso dei dumpDump location

Il percorso predefinito per il file di dump è la directory di lavoro corrente.The default location for the dump file is the current working directory. È possibile controllare dove viene archiviato il file usando l'opzione seguente:You can control where the file is stored using the following option:

-XX:HeapDumpPath=/path

Ad esempio, se si usa -XX:HeapDumpPath=/tmp, il dump viene archiviato nella directory /tmp.For example, using -XX:HeapDumpPath=/tmp causes the dumps to be stored in the /tmp directory.

ScriptScripts

È anche possibile generare uno script quando si verifica un OutOfMemoryError .You can also trigger a script when an OutOfMemoryError occurs. Ad esempio, attivando una notifica per sapere che si è verificato l'errore.For example, triggering a notification so you know that the error has occurred. Usare l'opzione seguente per attivare uno script su un OutOfMemoryError:Use the following option to trigger a script on an OutOfMemoryError:

-XX:OnOutOfMemoryError=/path/to/script

Nota

Poiché Hadoop è un sistema distribuito, tutti gli script usati devono essere posizionati in tutti i nodi del cluster in cui viene eseguito il servizio.Since Hadoop is a distributed system, any script used must be placed on all nodes in the cluster that the service runs on.

Lo script deve anche trovarsi in un percorso accessibile dall'account con cui viene eseguito il servizio e deve fornire autorizzazioni di esecuzione.The script must also be in a location that is accessible by the account the service runs as, and must provide execute permissions. Ad esempio, è possibile archiviare gli script in /usr/local/bin e usare chmod go+rx /usr/local/bin/filename.sh per concedere autorizzazioni di lettura ed esecuzione.For example, you may wish to store scripts in /usr/local/bin and use chmod go+rx /usr/local/bin/filename.sh to grant read and execute permissions.

Uso di AmbariUsing Ambari

Per modificare la configurazione di un servizio, attenersi alla procedura seguente:To modify the configuration for a service, use the following steps:

  1. Aprire l'interfaccia utente Web di Ambari per il cluster.Open the Ambari web UI for your cluster. L'URL è https://YOURCLUSTERNAME.azurehdinsight.net.The URL is https://YOURCLUSTERNAME.azurehdinsight.net.

    Quando richiesto, eseguire l'autenticazione al sito usando il nome dell'account HTTP (impostazione predefinita: admin) e la password per il cluster.When prompted, authenticate to the site using the HTTP account name (default: admin) and password for your cluster.

    Nota

    È possibile che Ambari richieda il nome utente e la password una seconda volta.You may be prompted a second time by Ambari for the user name and password. In questo caso, immettere lo stesso nome dell'account e la stessa password.If so, enter the same account name and password

  2. Usando l'elenco a sinistra, selezionare l'area del servizio da modificare.Using the list of on the left, select the service area you want to modify. Ad esempio, HDFS.For example, HDFS. Nell'area centrale selezionare la scheda Configs .In the center area, select the Configs tab.

    Immagine dell'interfaccia Web di Ambari con la scheda HDFS Configs selezionata

  3. Usando la voce Filter... immettere opts.Using the Filter... entry, enter opts. Vengono visualizzati solo gli elementi che contengono questo testo.Only items containing this text are displayed.

    Elenco filtrato

  4. Trovare la voce *_OPTS per il servizio per cui si vogliono abilitare i dump dell'heap e aggiungere le opzioni da abilitare.Find the *_OPTS entry for the service you want to enable heap dumps for, and add the options you wish to enable. Nella figura seguente è stato aggiunto -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ alla voce HADOOP_NAMENODE_OPTS:In the following image, I've added -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ to the HADOOP_NAMENODE_OPTS entry:

    HADOOP_NAMENODE_OPTS con -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/

    Nota

    Quando si abilitato i dump dell'heap per il processo figlio di mapping o riduzione, si cercano i campi denominati mapreduce.admin.map.child.java.opts e mapreduce.admin.reduce.child.java.opts.When enabling heap dumps for the map or reduce child process, look for the fields named mapreduce.admin.map.child.java.opts and mapreduce.admin.reduce.child.java.opts.

    Fare clic sul pulsante Save per salvare le modifiche apportate.Use the Save button to save the changes. Sarà possibile immettere una breve nota che descrive le modifiche.You can enter a short note describing the changes.

  5. Dopo avere applicato le modifiche, viene visualizzata l'icona Restart required accanto a uno o più servizi.Once the changes have been applied, the Restart required icon appears beside one or more services.

    icona restart required e pulsante restart

  6. Selezionare ogni servizio che richiede un riavvio e usare il pulsante Service Actions per Disattivare la modalità di manutenzione.Select each service that needs a restart, and use the Service Actions button to Turn On Maintenance Mode. La modalità di manutenzione impedisce che vengano generati avvisi quando si riavvia questo servizio.Maintenance mode prevents alerts from being generated from the service when you restart it.

    Menu Turn on maintenance mode

  7. Dopo aver abilitato la modalità di manutenzione, usare il pulsante Restart per il servizio per Restart All EffectedOnce you have enabled maintenance mode, use the Restart button for the service to Restart All Effected

    Voce Restart All Affected

    Nota

    le voci del pulsante Restart possono essere diverse per altri servizi.the entries for the Restart button may be different for other services.

  8. Dopo il riavvio dei servizi, usare il pulsante Service Actions per Disattivare la modalità di manutenzione.Once the services have been restarted, use the Service Actions button to Turn Off Maintenance Mode. Questa opzione indica ad Ambari di riprendere il monitoraggio per gli avvisi relativi al servizio.This Ambari to resume monitoring for alerts for the service.