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:
Navigeer in een webbrowser naar
https://CLUSTERNAME.azurehdinsight.net
, waarbijCLUSTERNAME
de naam van uw cluster is.Selecteer in de lijst aan de linkerkant het servicegebied dat u wilt wijzigen. Bijvoorbeeld HDFS. Selecteer in het middelste gebied het tabblad Configuraties .
Voer opts in met de vermelding Filter.... Alleen items met deze tekst worden weergegeven.
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: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.
Zodra de wijzigingen zijn toegepast, verschijnt het pictogram Opnieuw opstarten vereist naast een of meer services.
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.
Nadat u de onderhoudsmodus hebt ingeschakeld, gebruikt u de knop Opnieuw opstarten voor de service om alles opnieuw op te starten
Notitie
De vermeldingen voor de knop Opnieuw opstarten kunnen verschillen voor andere services.
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.