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:

  1. Från en webbläsare går du till https://CLUSTERNAME.azurehdinsight.net, där CLUSTERNAME är namnet på klustret.

  2. 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 .

    Image of Ambari web with HDFS Configs tab selected.

  3. Använd posten Filter... och ange opts. Endast objekt som innehåller den här texten visas.

    Apache Ambari config filtered list.

  4. 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 :

    Apache Ambari 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.

  5. När ändringarna har tillämpats visas ikonen Starta om obligatoriskt bredvid en eller flera tjänster.

    restart required icon and restart button.

  6. 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.

    Turn on hdi maintenance mode menu.

  7. 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

    Apache Ambari Restart All Affected entry.

    Kommentar

    Posterna för knappen Starta om kan skilja sig åt för andra tjänster.

  8. 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.