Udostępnij za pośrednictwem


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

  1. Utwórz ten fikcyjny katalog przy użyciu polecenia : sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. Uruchom ponownie usługę HMaster z poziomu interfejsu użytkownika systemu Ambari.

Jeśli używasz biblioteki hbase-2.x, zobacz więcej informacji na temat przypisywania przestrzeni nazw i meta tabeli przy użyciu karty hbck2

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 od podstaw (.tmp) do folderu danych. HMaster analizuje również folder dzienników zapisu (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 powodować problem (na przykład może to być folder WAL lub folder .tmp). Następnie w Eksplorator usługi Azure Storage lub przy użyciu poleceń systemu plików 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 można pozostawić po awarii procesu itd.) Wymuś usunięcie tego pliku w eksploratorze chmury lub przy użyciu poleceń systemu plików HDFS.

Czasami w tej lokalizacji może również znajdować się plik tymczasowy o nazwie podobny $$$.$$$ do tego. 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

  1. 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>'
    
  2. hbase: namespace Usuń wpis. Ten wpis może być tym samym błędem zgłaszanym podczas hbase: namespace skanowania tabeli.

  3. Uruchom ponownie aktywny HMaster z interfejsu użytkownika systemu Ambari, aby wyświetlić bazę danych HBase w stanie uruchomienia.

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

Funkcja HMaster zwraca limit czasu z krytycznym wyjątkiem podobnym 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. Przekroczenie limitu czasu jest znaną wadą HMaster. Ogólne zadania uruchamiania klastra mogą trwać długo. HMaster zamyka się, jeśli tabela przestrzeni nazw nie jest 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

  1. W interfejsie użytkownika systemu Apache Ambari przejdź do pozycji Konfiguracje bazy danych HBase>. W pliku niestandardowym hbase-site.xml dodaj następujące ustawienie:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. 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:

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 GC JVM. 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 rozwiązać ten problem, zmień limit czasu sesji zookeeper, nie tylko hbase-site ustawieniezookeeper.session.timeout, ale także ustawienie maxSessionTimeout Zookeeper zoo.cfg należy zmienić.

  1. Uzyskaj dostęp do interfejsu użytkownika systemu Ambari, przejdź do pozycji HBase —> konfiguracje —> ustawienia w sekcji Limity czasu zmień wartość limitu czasu sesji usługi Zookeeper.

  2. 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 HBase zookeeper.session.timeout.

    Key: maxSessionTimeout Value: 120000  
    
  3. 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

Nieprawidłowo skonfigurowane ustawienia systemu plików HDFS i 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 problem nie został wyświetlony lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać więcej pomocy technicznej:

  • Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem pomocy technicznej społeczności platformy Azure.

  • Nawiąż połączenie z @AzureSupport — oficjalnym kontem platformy Microsoft Azure, aby ulepszyć środowisko 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ą w witrynie 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 dotyczącej zarządzania subskrypcjami i rozliczeniami jest oferowany w ramach subskrypcji platformy Microsoft Azure, a pomoc techniczna jest świadczona w ramach jednego z planów pomocy technicznej platformy Azure.