Delen via


Heap-dumps inschakelen voor Apache Hadoop-services op Linux-gebaseerde HDInsight

Heap-dumps bevatten een momentopname van het geheugen van de toepassing, inclusief de waarden van variabelen op het moment dat de dump is gemaakt. Ze zijn dus handig voor het diagnosticeren van problemen die optreden tijdens runtime.

Diensten

U kunt heapdumps inschakelen voor de volgende services:

  • Apache hcatalog - tempelton
  • Apache Hive - HiveServer2, Metastore, DerbyServer
  • mapreduce - jobhistoryserver
  • Apache Yarn - resourcemanager, nodemanager, timelineserver
  • Apache HDFS - - datanode, secondarynamenode, namenode

U kunt ook heapdumps inschakelen voor de kaart- en reductieprocessen die worden uitgevoerd door HDInsight.

Inzicht in heapdumpconfiguratie

Heap-dumps worden ingeschakeld door opties (ook wel opts of parameters genoemd) door te geven aan de JVM wanneer een service wordt gestart. Voor de meeste Apache Hadoop--services kunt u het shellscript wijzigen dat wordt gebruikt om de service te starten om deze opties door te geven.

In elk script is er een export voor *_OPTS, die de opties bevat die worden doorgegeven aan de JVM. In het script hadoop-env.sh bevat de regel die begint met export HADOOP_NAMENODE_OPTS= bijvoorbeeld de opties voor de NameNode-service.

Map- en reduceprocessen verschillen enigszins, omdat deze bewerkingen onderdelen van de MapReduce-service zijn. Elk map- of reduceproces wordt uitgevoerd in een subcontainer, en er zijn twee invoeren die de JVM-opties bevatten. Beide zijn opgenomen in mapred-site.xml:

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

Notitie

We raden u aan om Apache Ambari- te gebruiken om zowel de scripts als mapred-site.xml-instellingen te wijzigen, omdat Ambari het repliceren van wijzigingen tussen knooppunten in het cluster afhandelt. Zie de sectie Apache Ambari gebruiken voor specifieke stappen.

Heapdumps inschakelen

Met de volgende optie kunt u heapdumps inschakelen wanneer een OutOfMemoryError optreedt:

-XX:+HeapDumpOnOutOfMemoryError

De + geeft aan dat deze optie is ingeschakeld. De standaardwaarde is uitgeschakeld.

Waarschuwing

Heap-dumps zijn standaard niet ingeschakeld voor Hadoop-services in HDInsight, omdat de dumpbestanden groot kunnen zijn. Als u ze inschakelt voor probleemoplossing, moet u deze uitschakelen nadat u het probleem hebt gereproduceerd en de dumpbestanden hebt verzameld.

Dumplocatie

De standaardlocatie voor het dumpbestand is de huidige werkmap. U kunt bepalen waar het bestand is opgeslagen met behulp van de volgende optie:

-XX:HeapDumpPath=/path

Als u bijvoorbeeld -XX:HeapDumpPath=/tmp gebruikt, worden de dumps opgeslagen in de map /tmp.

Scripten

U kunt ook een script activeren wanneer een OutOfMemoryError- plaatsvindt. Als u bijvoorbeeld een melding activeert, zodat u weet dat de fout is opgetreden. Gebruik de volgende optie om een script te activeren op een OutOfMemoryError-:

-XX:OnOutOfMemoryError=/path/to/script

Notitie

Omdat Apache Hadoop een gedistribueerd systeem is, moet elk script dat wordt gebruikt, worden geplaatst op alle knooppunten in het cluster waarop de service wordt uitgevoerd.

Het script moet zich ook op een locatie bevinden die toegankelijk is voor het account dat door de service wordt uitgevoerd en moet uitvoeringsmachtigingen opgeven. U kunt bijvoorbeeld scripts opslaan in /usr/local/bin en chmod go+rx /usr/local/bin/filename.sh gebruiken om lees- en uitvoermachtigingen te verlenen.

Apache Ambari gebruiken

Gebruik de volgende stappen om de configuratie voor een service te wijzigen:

  1. Navigeer in een webbrowser naar https://CLUSTERNAME.azurehdinsight.net, waarbij CLUSTERNAME de naam van uw cluster is.

  2. Selecteer in de lijst aan de linkerkant het servicegebied dat u wilt wijzigen. Bijvoorbeeld HDFS-. Selecteer in het middelste gebied het tabblad Configuraties.

    Afbeelding van Ambari-web met het tabblad HDFS-configuraties geselecteerd.

  3. Gebruik het -filter, voer in en voer optiesin. Alleen items met deze tekst worden weergegeven.

    gefilterde lijst met apache Ambari-configuraties.

  4. Zoek de *_OPTS vermelding voor de service waarvoor u heapdumps wilt inschakelen en voeg de opties toe die u wilt inschakelen. In de volgende afbeelding heb ik -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ toegevoegd aan de vermelding HADOOP_NAMENODE_OPTS:

    Apache Ambari hadoop-namenode-opts.

    Notitie

    Wanneer u heapdumps inschakelt voor het onderliggende map- of reduce-proces, zoekt u naar velden met de namen mapreduce.admin.map.child.java.opts en mapreduce.admin.reduce.child.java.opts.

    Gebruik de knop Opslaan om de wijzigingen op te slaan. U kunt een korte notitie invoeren waarin de wijzigingen worden beschreven.

  5. Zodra de wijzigingen zijn toegepast, wordt het pictogram Opnieuw opstarten vereist naast een of meer services weergegeven.

    pictogram voor opnieuw opstarten vereist en de knop Opnieuw opstarten.

  6. Selecteer elke service die opnieuw moet worden opgestart en gebruik de knop Serviceacties om de onderhoudsmodus in te schakelen . Onderhoudsmodus voorkomt dat waarschuwingen worden gegenereerd vanuit de service wanneer u deze opnieuw start.

    hdi-onderhoudsmodusmenu inschakelen.

  7. Nadat u de onderhoudsmodus hebt ingeschakeld, gebruikt u de knop Opnieuw opstarten voor de service om alle opnieuw opstarten

    Apache Ambari Alle betrokken onderdelen opnieuw opstarten.

    Notitie

    De vermeldingen voor de knop Opnieuw opstarten kunnen afwijken voor andere services.

  8. Zodra de services opnieuw zijn opgestart, gebruikt u de knop Serviceacties om de onderhoudsmodus uit te schakelen. Deze Ambari hervat de bewaking voor waarschuwingen voor de service.