Heap-dumps inschakelen voor Apache Hadoop-services in HDInsight op basis van Linux

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.

Services

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.

Informatie over heap-dumpconfiguratie

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 export HADOOP_NAMENODE_OPTS= bijvoorbeeld de opties voor de NameNode-service.

Toewijzings- en reductieprocessen verschillen enigszins, omdat deze bewerkingen een onderliggend proces van de MapReduce-service zijn. Elk toewijzings- of reductieproces wordt uitgevoerd in een onderliggende container en er zijn twee vermeldingen 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 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

Hiermee + wordt aangegeven dat deze optie is ingeschakeld. De standaardinstelling 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 -XX:HeapDumpPath=/tmp bijvoorbeeld gebruikt, worden de dumps opgeslagen in de map /tmp.

Scripts

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 voor 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 /usr/local/bin en gebruiken chmod go+rx /usr/local/bin/filename.sh 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 .

    Image of Ambari web with HDFS Configs tab selected.

  3. Voer opts in met de vermelding Filter.... Alleen items met deze tekst worden weergegeven.

    Apache Ambari config filtered list.

  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 toegevoegd aan -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ de HADOOP_NAMENODE_OPTS vermelding:

    Apache Ambari hadoop-namenode-opts.

    Notitie

    Wanneer u heapdumps inschakelt voor de kaart of het onderliggende proces vermindert, zoekt u naar de velden met de naam 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, verschijnt het pictogram Opnieuw opstarten vereist naast een of meer services.

    restart required icon and restart button.

  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.

    Turn on hdi maintenance mode menu.

  7. Nadat u de onderhoudsmodus hebt ingeschakeld, gebruikt u de knop Opnieuw opstarten voor de service om alles opnieuw op te starten

    Apache Ambari Restart All Affected entry.

    Notitie

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

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