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:
W przeglądarce internetowej przejdź do
https://CLUSTERNAME.azurehdinsight.net
lokalizacji , gdzieCLUSTERNAME
jest nazwą klastra.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 ).
Za pomocą wpisu Filter... (Filtr...) wprowadź wyrażenie zgody. Wyświetlane są tylko elementy zawierające ten tekst.
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 :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.
Po zastosowaniu zmian obok co najmniej jednej usługi zostanie wyświetlona ikona Uruchom ponownie wymagane .
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.
Po włączeniu trybu konserwacji użyj przycisku Uruchom ponownie dla usługi, aby ponownie uruchomić wszystkie efekty
Uwaga
Wpisy przycisku Uruchom ponownie mogą się różnić w przypadku innych usług.
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.