Nie można uruchomić usługi Apache HBase Master (HMaster) w usłudze Azure HDInsight
W tym artykule opisano kroki rozwiązywania problemów i możliwe rozwiązania problemów podczas interakcji z klastrami usługi Azure HDInsight.
Scenariusz: Master startup cannot progress, in holding-pattern until region comes online
Problem
Nie można uruchomić usługi HMaster z powodu następującego ostrzeżenia:
hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined.
Na przykład wartości parametrów mogą się różnić w rzeczywistym komunikacie:
hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.
Przyczyna
Usługa HMaster sprawdza katalog WAL na serwerach regionów przed przywróceniem regionów OPEN w trybie online. W takim przypadku, jeśli ten katalog nie był obecny, nie rozpoczynał pracy
Rozwiązanie
Utwórz ten fikcyjny katalog przy użyciu polecenia :
sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000
Uruchom ponownie usługę HMaster z poziomu interfejsu użytkownika systemu Ambari.
Jeśli używasz bazy danych hbase-2.x, zobacz więcej informacji w temacie how to use hbck2 to assign namespace and meta table (Jak używać biblioteki hbck2 do przypisywania przestrzeni nazw i meta tabeli)
Scenariusz: Niepowodzenie niepodzielnej zmiany nazwy
Problem
Nieoczekiwane pliki zidentyfikowane podczas procesu uruchamiania.
Przyczyna
Podczas procesu uruchamiania HMaster wykonuje wiele kroków inicjowania, w tym przenoszenie danych z folderu od podstaw (tmp) do folderu danych. Usługa HMaster sprawdza również folder dzienników zapisu z wyprzedzeniem (WAL), aby sprawdzić, czy istnieją serwery regionów, które nie odpowiadają.
HMaster wykonuje podstawowe polecenie listy w folderach WAL. Jeśli w dowolnym momencie usługa HMaster widzi nieoczekiwany plik w dowolnym z tych folderów, zgłasza wyjątek i nie uruchamia się.
Rozwiązanie
Sprawdź stos wywołań i spróbuj ustalić, który folder może być przyczyną problemu (na przykład może to być folder WAL lub folder .tmp). Następnie w Eksplorator usługi Azure Storage lub za pomocą poleceń HDFS spróbuj zlokalizować plik problemu. Zazwyczaj ten plik jest nazywany .*-renamePending.json
(Plik *-renamePending.json
jest plikiem dziennika używanym do implementowania niepodzielnej operacji zmiany nazwy w sterowniku WASB. Ze względu na błędy w tej implementacji te pliki mogą być pozostawiane po awarii procesu itd.) Wymuś usunięcie tego pliku w eksploratorze chmury lub przy użyciu poleceń HDFS.
Czasami w tej lokalizacji może również znajdować się plik tymczasowy o nazwie podobny $$$.$$$
do poniższego. Aby wyświetlić ten plik, musisz użyć polecenia HDFSls
. Nie można wyświetlić pliku w Eksplorator usługi Azure Storage. Aby usunąć ten plik, użyj polecenia hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$
HDFS .
Po uruchomieniu tych poleceń usługa HMaster powinna zostać uruchomiona natychmiast.
Scenariusz: Brak adresu serwera na liście
Problem
Może zostać wyświetlony komunikat wskazujący, że hbase: meta
tabela nie jest w trybie online. Uruchomienie hbck
polecenia może zgłosić, że hbase: meta table replicaId 0 is not found on any region.
w dziennikach HMaster może zostać wyświetlony komunikat: No server address listed in hbase: meta for region hbase: backup <region name>
.
Przyczyna
HMaster nie może zainicjować po ponownym uruchomieniu bazy danych HBase.
Rozwiązanie
W powłoce HBase wprowadź następujące polecenia (zmień rzeczywiste wartości zgodnie z obowiązującymi):
scan 'hbase:meta' delete 'hbase:meta','hbase:backup <region name>','<column name>'
hbase: namespace
Usuń wpis. Ten wpis może być tym samym błędem zgłaszanym podczashbase: namespace
skanowania tabeli.Uruchom ponownie aktywny element HMaster z interfejsu użytkownika systemu Ambari, aby wywołać bazę danych HBase w stanie uruchomienia.
W powłoce HBase, aby wyświetlić wszystkie tabele w trybie offline, uruchom następujące polecenie:
hbase hbck -ignorePreCheckPermission -fixAssignments
Scenariusz: java.io.IOException: Timedout
Problem
Limit czasu HMaster jest zwracany z powodu wyjątku krytycznego podobnego do: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned
.
Przyczyna
Ten problem może wystąpić, jeśli masz wiele tabel i regionów, które nie zostały opróżnione po ponownym uruchomieniu usług HMaster. Limit czasu jest znaną wadą HMaster. Ogólne zadania uruchamiania klastra mogą zająć dużo czasu. Usługa HMaster zostanie zamknięta, jeśli tabela przestrzeni nazw nie została jeszcze przypisana. Długie zadania uruchamiania mają miejsce, gdy istnieje duża ilość niepotrzebnych danych, a limit czasu wynoszący pięć minut nie jest wystarczający.
Rozwiązanie
W interfejsie użytkownika systemu Apache Ambari przejdź do pozycji HBaseConfigs (Konfiguracjebazy danych HBase>). W pliku niestandardowym
hbase-site.xml
dodaj następujące ustawienie:Key: hbase.master.namespace.init.timeout Value: 2400000
Uruchom ponownie wymagane usługi (HMaster i ewentualnie inne usługi HBase).
Scenariusz: Częste ponowne uruchamianie serwera regionu
Problem
Węzły są okresowo ponownie uruchamiane. W dziennikach serwera regionów mogą być widoczne wpisy podobne do następujących:
2017-05-09 17:45:07,683 WARN [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
Przyczyna: limit czasu sesji zookeeper
Długa regionserver
pauza JVM GC. Wstrzymanie powoduje regionserver
brak odpowiedzi i nie można wysłać pulsu do HMaster w ramach limitu czasu sesji zookeeper 40s. HMaster uważa, że regionserver
nie żyje, przerywa regionserver
i ponownie uruchamia.
Aby temu zapobiec, zmień limit czasu sesji usługi Zookeeper, nie tylko hbase-site
ustawieniezookeeper.session.timeout
, ale także ustawienie maxSessionTimeout
Zookeeper zoo.cfg
należy zmienić.
Uzyskaj dostęp do interfejsu użytkownika systemu Ambari, przejdź do pozycji HBase —> Configs —> Ustawienia, w sekcji Limity czasu, zmień wartość limitu czasu sesji dozorcy.
Uzyskaj dostęp do interfejsu użytkownika systemu Ambari, przejdź do pozycji Zookeeper —> Configs —> Custom
zoo.cfg
, add/change następujące ustawienie. Upewnij się, że wartość jest taka sama jak HBasezookeeper.session.timeout
.Key: maxSessionTimeout Value: 120000
Uruchom ponownie wymagane usługi.
Przyczyna: przeciążony regionServer
Postępuj zgodnie z instrukcjami Liczba regionów na RS — górna granica , aby obliczyć górną granicę.
Na przykład: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50
Aby rozwiązać ten problem, przeskaluj klaster HBase w górę.
Scenariusz: niepowodzenie dzielenia dziennika
Problem
Usługa HMasters nie może pojawić się w klastrze HBase.
Przyczyna
Błędnie skonfigurowane ustawienia systemu plików HDFS i bazy danych HBase dla pomocniczego konta magazynu.
Rozwiązanie
set hbase.rootdir: wasb://@.blob.core.windows.net/hbase
i uruchom ponownie usługi w systemie Ambari.
Następne kroki
Jeśli nie widzisz problemu lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać dodatkową pomoc techniczną:
Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem pomocy technicznej społeczności platformy Azure.
Połącz się z @AzureSupport — oficjalnym kontem platformy Microsoft Azure w celu poprawy jakości obsługi klienta. Łączenie społeczności platformy Azure z odpowiednimi zasobami: odpowiedziami, pomocą techniczną i ekspertami.
Jeśli potrzebujesz dodatkowej pomocy, możesz przesłać wniosek o pomoc techniczną z Azure Portal. Wybierz pozycję Pomoc techniczna na pasku menu lub otwórz centrum Pomoc i obsługa techniczna . Aby uzyskać bardziej szczegółowe informacje, zobacz How to create an pomoc techniczna platformy Azure request (Jak utworzyć żądanie pomoc techniczna platformy Azure). Dostęp do pomocy technicznej w zakresie zarządzania subskrypcjami i rozliczeń jest dołączany do subskrypcji platformy Microsoft Azure, a pomoc techniczna jest zapewniana za pośrednictwem jednego z planów pomocy technicznej platformy Azure.