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

  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 element HMaster z interfejsu użytkownika systemu Ambari, aby wywołać 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

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

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

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

  2. Uzyskaj dostęp do interfejsu użytkownika systemu Ambari, przejdź do pozycji Zookeeper —> Configs —> Customzoo.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

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ą: