Aktivera heapdumpar för Apache Hadoop-tjänster i Linux-baserade HDInsight
Heap-dumpar innehåller en ögonblicksbild av programmets minne, inklusive värdena för variabler när dumpen skapades. De är därför användbara för att diagnostisera problem som uppstår vid körning.
Tjänster
Du kan aktivera heapdumpar för följande tjänster:
- Apache hcatalog – tempelton
- Apache hive – hiveserver2, metaarkiv, derbyserver
- mapreduce – jobhistoryserver
- Apache yarn – resourcemanager, nodemanager, timelineserver
- Apache hdfs – datanode, secondarynamenode, namenode
Du kan också aktivera heapdumpar för kart- och reduce-processerna som kördes av HDInsight.
Förstå konfiguration av heapdump
Heap-dumpar aktiveras genom att alternativ (kallas ibland för opts eller parametrar) skickas till JVM när en tjänst startas. För de flesta Apache Hadoop-tjänster kan du ändra shell-skriptet som används för att starta tjänsten för att godkänna dessa alternativ.
I varje skript finns det en export för *_OPTS, som innehåller de alternativ som skickas till JVM. I skriptet hadoop-env.sh innehåller till exempel raden som börjar med export HADOOP_NAMENODE_OPTS=
alternativen för NameNode-tjänsten.
Kart- och reduce-processer skiljer sig något eftersom dessa åtgärder är en underordnad process i MapReduce-tjänsten. Varje mappnings- eller reduce-process körs i en underordnad container och det finns två poster som innehåller JVM-alternativen. Båda finns i mapred-site.xml:
- mapreduce.admin.map.child.java.opts
- mapreduce.admin.reduce.child.java.opts
Kommentar
Vi rekommenderar att du använder Apache Ambari för att ändra både skripten och mapred-site.xml inställningar, eftersom Ambari hanterar replikeringsändringar mellan noder i klustret. Se avsnittet Använda Apache Ambari för specifika steg.
Aktivera heap dumps
Följande alternativ aktiverar heapdumpar när en OutOfMemoryError inträffar:
-XX:+HeapDumpOnOutOfMemoryError
+ Anger att det här alternativet är aktiverat. Standardvärdet är inaktiverat.
Varning
Heap-dumpar är inte aktiverade för Hadoop-tjänster i HDInsight som standard, eftersom dumpfilerna kan vara stora. Om du aktiverar dem för felsökning ska du komma ihåg att inaktivera dem när du har återskapat problemet och samlat in dumpfilerna.
Dumpplats
Standardplatsen för dumpfilen är den aktuella arbetskatalogen. Du kan styra var filen lagras med hjälp av följande alternativ:
-XX:HeapDumpPath=/path
Användning gör -XX:HeapDumpPath=/tmp
till exempel att dumparna lagras i katalogen /tmp.
Skript
Du kan också utlösa ett skript när en OutOfMemoryError inträffar. Du kan till exempel utlösa ett meddelande så att du vet att felet har inträffat. Använd följande alternativ för att utlösa ett skript på en OutOfMemoryError:
-XX:OnOutOfMemoryError=/path/to/script
Kommentar
Eftersom Apache Hadoop är ett distribuerat system måste alla skript som används placeras på alla noder i klustret som tjänsten körs på.
Skriptet måste också finnas på en plats som är tillgänglig för kontot som tjänsten körs som och måste ange körningsbehörigheter. Du kanske till exempel vill lagra skript i /usr/local/bin
och använda chmod go+rx /usr/local/bin/filename.sh
för att bevilja läs- och körningsbehörigheter.
Använda Apache Ambari
Om du vill ändra konfigurationen för en tjänst använder du följande steg:
Från en webbläsare går du till
https://CLUSTERNAME.azurehdinsight.net
, därCLUSTERNAME
är namnet på klustret.Med hjälp av listan över till vänster väljer du det tjänstområde som du vill ändra. Till exempel HDFS. I mittenområdet väljer du fliken Konfigurationer .
Använd posten Filter... och ange opts. Endast objekt som innehåller den här texten visas.
Leta upp posten *_OPTS för den tjänst som du vill aktivera heapdumpar för och lägg till de alternativ som du vill aktivera. I följande bild har jag lagt
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/
till i posten HADOOP_NAMENODE_OPTS :Kommentar
När du aktiverar heapdumpar för kartan eller minskar underordnad process letar du efter fälten med namnet mapreduce.admin.map.child.java.opts och mapreduce.admin.reduce.child.java.opts.
Spara ändringarna med knappen Spara. Du kan ange en kort anteckning som beskriver ändringarna.
När ändringarna har tillämpats visas ikonen Starta om obligatoriskt bredvid en eller flera tjänster.
Välj varje tjänst som behöver startas om och använd knappen Tjänståtgärder för att aktivera underhållsläge. Underhållsläge förhindrar att aviseringar genereras från tjänsten när du startar om den.
När du har aktiverat underhållsläge använder du knappen Starta om för tjänsten för att starta om alla verkställda
Kommentar
Posterna för knappen Starta om kan skilja sig åt för andra tjänster.
När tjänsterna har startats om använder du knappen Service Actions (Tjänståtgärder) för att inaktivera underhållsläge. Ambari återupptar övervakningen av aviseringar för tjänsten.