Migrowanie klastra Apache HBase do nowej wersji

W tym artykule omówiono sposób aktualizowania klastra Apache HBase w Azure HDInsight do nowszej wersji.

Ten artykuł ma zastosowanie tylko wtedy, gdy używasz tego samego konta usługi Azure Storage dla klastrów źródłowych i docelowych. Aby przeprowadzić uaktualnienie przy użyciu nowego lub innego Storage klastra docelowego, zobacz Migrowanie bazy danych Apache HBase do nowej wersji przy użyciu nowego Storage docelowego.

Przestój podczas uaktualniania powinien trwać tylko kilka minut. Ten przestój jest spowodowany przez kroki opróżnienia wszystkich danych w pamięci oraz czas konfigurowania i ponownego uruchamiania usług w nowym klastrze. Wyniki będą się różnić w zależności od liczby węzłów, ilości danych i innych zmiennych.

Przegląd zgodności bazy danych Apache HBase

Przed uaktualnieniem bazy danych Apache HBase upewnij się, że wersje bazy danych HBase w klastrze źródłowym i docelowym są zgodne. Zapoznaj się z macierzą zgodności wersji bazy danych HBase i informacjami o wersji w przewodniku referencyjnym bazy danych HBase, aby upewnić się, że aplikacja jest zgodna z nową wersją.

Oto przykładowa macierz zgodności. Y oznacza zgodność, a N wskazuje na potencjalną niezgodność:

Typ zgodności Wersja główna Wersja pomocnicza Patch
Client-Server zgodności z siecią N Y Y
Server-Server zgodności N Y Y
Zgodność formatu pliku N Y Y
Zgodność interfejsu API klienta N Y Y
Zgodność binarna klienta N N Y
Ograniczona zgodność interfejsów API po stronie serwera
Stable N Y Y
Ewoluuje N N Y
Niestabilny N N N
Zgodność zależności N Y Y
Zgodność operacyjna N N Y

Aby uzyskać więcej informacji na temat wersji i zgodności hdInsight, zobacz Azure HDInsight wersji.

Omówienie migracji klastra Apache HBase

Aby uaktualnić klaster Apache HBase na Azure HDInsight, należy wykonać następujące podstawowe kroki. Aby uzyskać szczegółowe instrukcje, zobacz szczegółowe kroki i polecenia.

Przygotowywanie klastra źródłowego:

  1. Zatrzymaj pozyskiwanie danych.
  2. Opróżnij dane magazynu memstore.
  3. Zatrzymaj bazę danych HBase z ambari.
  4. W przypadku klastrów z przyspieszonym zapisem należy wrócić do katalogu write ahead log (WAL).

Przygotuj klaster docelowy:

  1. Utwórz klaster docelowy.
  2. Zatrzymaj bazę danych HBase z ambari.
  3. Aktualizacja fs.defaultFS w konfiguracjach usługi HDFS w celu odwołania się do oryginalnego kontenera klastra źródłowego.
  4. W przypadku klastrów z przyspieszonym zapisem zaktualizuj konfiguracje usługi HBase, aby odwoływać się hbase.rootdir do oryginalnego kontenera klastra źródłowego.
  5. Czyszczenie danych dojrzewczych.

Ukończ migrację:

  1. Wyczyść i zmigruj WAL.
  2. Skopiuj aplikacje z domyślnego kontenera klastra docelowego do oryginalnego kontenera źródłowego.
  3. Uruchom wszystkie usługi z klastra docelowego Ambari.
  4. Zweryfikuj bazę danych HBase.
  5. Usuń klaster źródłowy.

Szczegółowe kroki i polecenia migracji

Użyj tych szczegółowych kroków i poleceń, aby przeprowadzić migrację klastra Apache HBase.

Przygotowywanie klastra źródłowego

  1. Zatrzymaj pozyskiwanie do źródłowego klastra HBase.

  2. Opróżnij źródłowy klaster HBase, który uaktualniasz.

    Baza HBase zapisuje dane przychodzące w magazynie w pamięci nazywanym magazynem memstore. Gdy magazyn memstore osiągnie określony rozmiar, baza HBase opróżnia go na dysk w celu długoterminowego przechowywania na koncie magazynu klastra. Usunięcie klastra źródłowego po uaktualnieniu powoduje również usunięcie wszystkich danych w magazynach memstore. Aby zachować dane, przed uaktualnieniem ręcznie opróżnij magazyn mem każdej tabeli na dysk.

    Dane magazynu memstore można opróżnić, uruchamiając skrypt flush_all_tables.sh z repozytorium hbase-utils platformy Azure GitHub .

    Możesz również opróżnić dane magazynu memstore, uruchamiając następujące polecenie powłoki HBase z klastra usługi HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. Zaloguj się do usługi Apache Ambari w klastrze źródłowym za pomocą narzędzia i zatrzymaj usługi HBase.

  4. W wierszu polecenia potwierdzenia zaznacz pole, aby włączyć tryb konserwacji bazy danych HBase.

    Aby uzyskać więcej informacji na temat nawiązywania połączenia z usługą Ambari i korzystania z niej, zobacz Manage HDInsight clusters by using the Ambari Web UI(Zarządzanie klastrami HDInsight przy użyciu internetowego interfejsu użytkownika Ambari).

  5. Jeśli źródłowy klaster HBase nie ma funkcji przyspieszonego zapisu, pomiń ten krok. W przypadku źródłowych klastrów HBase z przyspieszonymi zapisami należy wrócić do katalogu WAL w systemie plików HDFS, uruchamiając następujące polecenia z sesji SSH na dowolnym węźle dozorcy lub węzłach procesu roboczego klastra źródłowego.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

Przygotowywanie klastra docelowego

  1. W Azure Portal skonfiguruj nowy docelowy klaster usługi HDInsight przy użyciu tego samego konta magazynu co klaster źródłowy, ale z inną nazwą kontenera:

  2. Zaloguj się do usługi Apache Ambari w nowym klastrze pod serwerem i zatrzymaj usługi HBase.

  3. W obszarze UsługiHDFSConfigsAdvancedCore-sitezmień ustawienie systemu plików HDFS tak, aby wskazać oryginalną nazwę kontenera klastra źródłowego. Na przykład ustawienie na poniższym zrzucie ekranu należy zmienić na wasbs://hbase-upgrade-old-2021-03-22 .

    In Ambari, select Services > HDFS > Configs > Advanced > Advanced core-site and change the container name.

  4. Jeśli klaster docelowy ma funkcję przyspieszonego zapisu, zmień ścieżkę tak, aby hbase.rootdir wskazuje oryginalną nazwę kontenera klastra źródłowego. Na przykład następującą ścieżkę należy zmienić na hbase-upgrade-old-2021-03-22 . Jeśli klaster nie ma przyspieszonych zapisu, pomiń ten krok.

    In Ambari, change the container name for the HBase rootdir.

  5. Wyczyść dane usługi Zookeeper w klastrze docelowym, uruchamiając następujące polecenia w dowolnym węźle usługi Zookeeper lub w węźle procesu roboczego:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Czyszczenie i migrowanie aplikacji WAL

Uruchom następujące polecenia, w zależności od źródłowej wersji usługi HDI oraz od tego, czy klastry źródłowe i docelowe mają przyspieszone zapis.

  • Klaster docelowy to zawsze HDI w wersji 4.0, ponieważ usługa HDI 3.6 jest w pomoc techniczna Basic i nie jest zalecana w przypadku nowych klastrów.
  • Polecenie kopiowania systemu plików HDFS to hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution .

Uwaga

  • Dla <source-container-fullpath> typu magazynu WASB to wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net .
  • Typ <source-container-fullpath> magazynu usługi Azure Data Lake Storage Gen2 to abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net .

Klaster źródłowy to HDI 3.6 lub HDI 4.0 z przyspieszonymi zapisami, a klaster docelowy ma przyspieszone zapis

Wyczyść dane usług WAL FS dla klastra docelowego, a następnie skopiuj katalog WAL z klastra źródłowego do systemu plików HDFS klastra docelowego. Skopiuj katalog, uruchamiając następujące polecenia w dowolnym węźle usługi Zookeeper lub w węźle procesu roboczego w klastrze docelowym:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://mycluster/

Klaster źródłowy to usługa HDI 3.6 bez przyspieszonych zapisu, a klaster docelowy ma przyspieszone zapis

Wyczyść dane usług WAL FS dla klastra docelowego, a następnie skopiuj katalog WAL z klastra źródłowego do systemu plików HDFS klastra docelowego. Skopiuj katalog, uruchamiając następujące polecenia w dowolnym węźle usługi Zookeeper lub w węźle procesu roboczego w klastrze docelowym:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container>/hbase/*WALs hdfs://mycluster/hbasewal

Klaster źródłowy to usługa HDI 3.6 bez przyspieszonych zapisu, a klaster docelowy nie ma przyspieszonych zapisu

Wyczyść dane usług WAL FS dla klastra docelowego i skopiuj katalog WAL klastra źródłowego do systemu plików HDFS klastra docelowego. Aby skopiować katalog, uruchom następujące polecenia w dowolnym węźle usługi Zookeeper lub w węźle procesu roboczego w klastrze docelowym:

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals

Klaster źródłowy to usługa HDI 4.0 bez przyspieszonych zapisu, a klaster docelowy ma przyspieszone zapis

Wyczyść dane usług WAL FS dla klastra docelowego, a następnie skopiuj katalog WAL z klastra źródłowego do systemu plików HDFS klastra docelowego. Skopiuj katalog, uruchamiając następujące polecenia w dowolnym węźle usługi Zookeeper lub w węźle procesu roboczego w klastrze docelowym:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal

Klaster źródłowy to usługa HDI 4.0 bez przyspieszonych zapisu, a klaster docelowy nie ma przyspieszonych zapisu

Wyczyść dane usług WAL FS dla klastra docelowego i skopiuj katalog WAL klastra źródłowego do systemu plików HDFS klastra docelowego. Aby skopiować katalog, uruchom następujące polecenia w dowolnym węźle usługi Zookeeper lub w węźle procesu roboczego w klastrze docelowym:

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /

Kończenie migracji

  1. Korzystając z kontekstu użytkownika, skopiuj folder i jego zawartość z folderu do sudo -u hdfs/hdp/apps/<new-version-name> folderu w obszarze <destination-container-fullpath>/hdp/apps<source-container-fullpath> . Folder można skopiować, uruchamiając następujące polecenia w klastrze docelowym:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
    

    Przykład:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/4.1.3.6 wasbs://hbase-upgrade-old-2021-03-22@hbaseupgrade.blob.core.windows.net/hdp/apps
    
  2. W klastrze docelowym zapisz zmiany i uruchom ponownie wszystkie wymagane usługi, jak wskazuje usługa Ambari.

  3. Wskaż aplikację w klastrze docelowym.

    Uwaga

    Statyczna nazwa DNS aplikacji zmienia się podczas uaktualniania. Zamiast kodować tę nazwę DNS, można skonfigurować rekord CNAME w ustawieniach DNS nazwy domeny, który wskazuje nazwę klastra. Inną opcją jest użycie pliku konfiguracji dla aplikacji, który można zaktualizować bez ponownego wdychania.

  4. Rozpocznij pozyskiwanie.

  5. Sprawdź spójność bazy danych HBase oraz proste operacje języka Data Definition Language (DDL) i języka Data Manipulation Language (DML).

  6. Jeśli klaster docelowy jest zadowalający, usuń klaster źródłowy.

Następne kroki

Aby dowiedzieć się więcej o bazie danych Apache HBase i uaktualnianiu klastrów usługi HDInsight, zobacz następujące artykuły: