Włączanie zrzutów sterty dla usług Apache Hadoop w usłudze HDInsight opartej na systemie Linux

Zrzuty sterty zawierają migawkę pamięci aplikacji, w tym wartości zmiennych w momencie utworzenia zrzutu. Są więc przydatne do diagnozowania problemów występujących w czasie wykonywania.

Usługi

Zrzuty sterty można włączyć dla następujących usług:

  • Apache hcatalog — tempelton
  • Apache hive — hiveserver2 , magazyn metadanych, derbyserver
  • mapreduce — jobhistoryserver
  • Apache yarn — resourcemanager, nodemanager, timelineserver
  • Apache hdfs — węzeł datanode, secondarynamenode, namenode

Można również włączyć zrzuty sterty dla procesów mapy i redukcji uruchomionych przez usługę HDInsight.

Opis konfiguracji zrzutu stert

Zrzuty sterty są włączone przez przekazywanie opcji (czasami nazywanych opcjami lub parametrami) do maszyny wirtualnej JVM po uruchomieniu usługi. W przypadku większości usług Apache Hadoop można zmodyfikować skrypt powłoki używany do uruchamiania usługi w celu przekazania tych opcji.

W każdym skry skrycie istnieje eksport dla *_OPTS, który zawiera opcje przekazywane do maszyny JVM. Na przykład w skryscie hadoop-env.sh wiersz rozpoczynający się od export HADOOP_NAMENODE_OPTS= zawiera opcje usługi NameNode.

Procesy mapowania i redukcji są nieco inne, ponieważ te operacje są procesem podrzędnym usługi MapReduce. Każdy proces mapowania lub redukcji jest uruchamiany w kontenerze podrzędnym i istnieją dwa wpisy zawierające opcje JVM. Oba zawarte w mapred-site.xml:

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

Uwaga

Zalecamy użycie narzędzia Apache Ambari do modyfikowania zarówno skryptów, jak i ustawień mapred-site.xml, ponieważ system Ambari obsługuje replikowanie zmian między węzłami w klastrze. Aby uzyskać szczegółowe instrukcje, zobacz sekcję Using Apache Ambari (Korzystanie z narzędzia Apache Ambari ).

Włączanie zrzutów stosu

Poniższa opcja umożliwia zrzuty sterty po wystąpieniu błędu OutOfMemoryError:

-XX:+HeapDumpOnOutOfMemoryError

Wskazuje + , że ta opcja jest włączona. Domyślnie wybrana jest opcja wyłączenia.

Ostrzeżenie

Zrzuty sterty nie są domyślnie włączone dla usług Hadoop w usłudze HDInsight, ponieważ pliki zrzutu mogą być duże. Jeśli włączysz je do rozwiązywania problemów, pamiętaj, aby je wyłączyć po odtworzeniu problemu i zebraniu plików zrzutu.

Lokalizacja zrzutu

Domyślną lokalizacją pliku zrzutu jest bieżący katalog roboczy. Możesz kontrolować miejsce przechowywania pliku przy użyciu następującej opcji:

-XX:HeapDumpPath=/path

Na przykład użycie -XX:HeapDumpPath=/tmp powoduje przechowywanie zrzutów w katalogu /tmp.

Skrypty

Możesz również wyzwolić skrypt, gdy wystąpi błąd OutOfMemoryError . Na przykład wyzwolenie powiadomienia, aby wiedzieć, że wystąpił błąd. Użyj następującej opcji, aby wyzwolić skrypt w błędzie OutOfMemoryError:

-XX:OnOutOfMemoryError=/path/to/script

Uwaga

Ponieważ usługa Apache Hadoop jest systemem rozproszonym, każdy używany skrypt musi zostać umieszczony we wszystkich węzłach w klastrze, na których działa usługa.

Skrypt musi również znajdować się w lokalizacji dostępnej dla konta, w ramach którego działa usługa i musi zapewniać uprawnienia do wykonywania. Na przykład możesz chcieć przechowywać skrypty i /usr/local/bin używać chmod go+rx /usr/local/bin/filename.sh ich do udzielania uprawnień do odczytu i wykonywania.

Korzystanie z narzędzia Apache Ambari

Aby zmodyfikować konfigurację usługi, wykonaj następujące kroki:

  1. W przeglądarce internetowej przejdź do https://CLUSTERNAME.azurehdinsight.netlokalizacji , gdzie CLUSTERNAME jest nazwą klastra.

  2. Korzystając z listy po lewej stronie, wybierz obszar usługi, który chcesz zmodyfikować. Na przykład system plików HDFS. W środkowym obszarze wybierz kartę Configs (Konfiguracje ).

    Image of Ambari web with HDFS Configs tab selected.

  3. Za pomocą wpisu Filter... (Filtr...) wprowadź wyrażenie zgody. Wyświetlane są tylko elementy zawierające ten tekst.

    Apache Ambari config filtered list.

  4. Znajdź wpis *_OPTS dla usługi, dla której chcesz włączyć zrzuty sterty, i dodaj opcje, które chcesz włączyć. Na poniższej ilustracji dodano -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ mnie do wpisu HADOOP_NAMENODE_OPTS :

    Apache Ambari hadoop-namenode-opts.

    Uwaga

    Podczas włączania zrzutów sterty dla procesu mapowania lub redukcji podrzędnego poszukaj pól o nazwie mapreduce.admin.map.child.java.opts i mapreduce.admin.reduce.child.java.opts.

    Użyj przycisku Zapisz, aby zapisać zmiany. Możesz wprowadzić krótką notatkę opisującą zmiany.

  5. Po zastosowaniu zmian obok co najmniej jednej usługi zostanie wyświetlona ikona Uruchom ponownie wymagane .

    restart required icon and restart button.

  6. Wybierz każdą usługę, która wymaga ponownego uruchomienia, i użyj przycisku Akcje usługi, aby włączyć tryb konserwacji. Tryb konserwacji uniemożliwia generowanie alertów z usługi po jej ponownym uruchomieniu.

    Turn on hdi maintenance mode menu.

  7. Po włączeniu trybu konserwacji użyj przycisku Uruchom ponownie dla usługi, aby ponownie uruchomić wszystkie efekty

    Apache Ambari Restart All Affected entry.

    Uwaga

    Wpisy przycisku Uruchom ponownie mogą się różnić w przypadku innych usług.

  8. Po ponownym uruchomieniu usług użyj przycisku Akcje usługi, aby wyłączyć tryb konserwacji. Ten narzędzie Ambari wznowi monitorowanie alertów dla usługi.