Udostępnij przez


Migrowanie klastra Apache HBase do nowej wersji

W tym artykule omówiono sposób aktualizowania klastra Apache HBase w usłudze 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 zaktualizować do nowego lub innego konta przechowywania dla klastra docelowego, zapoznaj się z Migracja bazy danych Apache HBase do nowej wersji z nowym kontem przechowywania.

Przestój podczas uaktualniania powinien trwać tylko kilka minut. Ten przestój jest spowodowany przez kroki opróżniania 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 z bazą danych Apache HBase

Przed uaktualnieniem bazy danych Apache HBase upewnij się, że wersje bazy danych HBase w klastrach źródłowych i docelowych są zgodne. Przejrzyj macierz zgodności wersji HBase i uwagi dotyczące wydania w Przewodniku Referencyjnym HBase, aby upewnić się, że aplikacja jest zgodna z nową wersją.

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

Typ zgodności Wersja główna Wersja mniejsza Aktualizacja
Zgodność przewodu klienta-serwera N Y Y
Kompatybilność między serwerami N Y Y
Zgodność formatu pliku N Y Y
Zgodność interfejsu API klienta N Y Y
Zgodność binarna klienta N N Y
Ograniczona zgodność interfejsu API po stronie serwera
Stabilny 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 usługi HDInsight, zobacz Wersje usługi Azure HDInsight.

Omówienie migracji klastra apache HBase

Aby uaktualnić klaster Apache HBase w usłudze Azure HDInsight, wykonaj następujące podstawowe kroki. Aby uzyskać szczegółowe instrukcje, zobacz szczegółowe kroki i polecenia lub użyj skryptów z sekcji Migrowanie bazy danych HBase przy użyciu skryptów na potrzeby automatycznej migracji.

Przygotuj klaster źródłowy:

  1. Zatrzymaj pozyskiwanie danych.
  2. Opróżnij dane w pamięci memstore.
  3. Zatrzymaj HBase w Ambari.
  4. W przypadku klastrów z przyspieszonymi zapisami utwórz kopię zapasową katalogu Write Ahead Log (WAL).

Przygotuj klaster docelowy:

  1. Utwórz klaster docelowy.
  2. Zatrzymaj HBase w Ambari.
  3. Zaktualizuj fs.defaultFS w konfiguracjach usługi HDFS, aby odwoływać się do oryginalnego kontenera klastra źródłowego.
  4. W przypadku klastrów z przyspieszonymi zapisami zaktualizuj hbase.rootdir konfiguracje usługi HBase, aby odwołać się do oryginalnego kontenera klastra źródłowego.
  5. Czyszczenie danych usługi Zookeeper.

Ukończ migrację:

  1. Czyszczenie i migrowanie pliku 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. Sprawdź bazę danych HBase.
  5. Usuń klaster źródłowy.

Szczegółowe kroki i polecenia migracji

Wykonaj te szczegółowe kroki i polecenia, aby przeprowadzić migrację klastra Apache HBase.

Przygotowywanie klastra źródłowego

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

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

    Baza HBase zapisuje dane przychodzące do magazynu w pamięci o nazwie memstore. Gdy magazyn memstore osiągnie określony rozmiar, baza HBase zapisuje go na dysk na potrzeby długoterminowego przechowywania danych w koncie pamięci masowej klastra. Usunięcie klastra źródłowego po uaktualnieniu spowoduje również usunięcie wszystkich danych w magazynach mem. Aby zachować dane, należy ręcznie opróżnić bufor pamięci każdej tabeli na dysk przed uaktualnieniem.

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

    Możesz również wyczyścić dane magazynu memstore, uruchamiając następujące polecenie powłoki HBase z klastra HDInsight.

    hbase shell
    flush "<table-name>"
    
  3. Zaloguj się do Apache Ambari w klastrze źródłowym z https://<OLDCLUSTERNAME>.azurehdinsight.net, i zatrzymaj usługi HBase.

  4. Po wyświetleniu monitu o potwierdzenie wybierz pole, aby włączyć tryb konserwacji bazy danych HBase.

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

  5. Jeśli źródłowy klaster HBase nie ma funkcji przyspieszonych zapisów , pomiń ten krok. W przypadku źródłowych klastrów HBase z przyspieszonymi zapisami wykonaj kopię zapasową katalogu WAL w systemie plików HDFS, uruchamiając następujące polecenia z sesji SSH w dowolnym z węzłów usługi Zookeeper lub węzłów roboczych klastra źródłowego.

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

Przygotowywanie klastra docelowego

  1. W portalu Azure skonfiguruj nowy docelowy klaster HDInsight używając tego samego konta magazynu co klaster źródłowy, ale z inną nazwą kontenera:

  2. Zaloguj się do systemu Apache Ambari w nowym klastrze pod adresem https://<NEWCLUSTERNAME>.azurehdinsight.neti zatrzymaj usługi HBase.

  3. W obszarze Usługi>HDFS>Configs>Advanced>Advanced core-site zmień fs.defaultFS ustawienie HDFS, aby wskazać oryginalną nazwę kontenera klastra źródłowego. Na przykład ustawienie na poniższym zrzucie ekranu powinno zostać zmienione na wasbs://hbase-upgrade-old-2021-03-22.

    W systemie Ambari wybierz Usługi > HDFS > Configs > Advanced > Advanced core-site i zmień nazwę kontenera.

  4. Jeśli klaster docelowy ma funkcję Przyspieszone zapisy, zmień ścieżkę hbase.rootdir tak, aby wskazywała oryginalną nazwę kontenera klastra źródłowego. Na przykład następująca ścieżka powinna zostać zmieniona na hbase-upgrade-old-2021-03-22. Jeśli klaster nie ma przyspieszonych zapisów, pomiń ten krok.

    W systemie Ambari zmień nazwę kontenera dla katalogu głównego bazy danych HBase.

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

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Czyszczenie i migrowanie pliku WAL

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

  • Klaster docelowy ma zawsze wersję HDI 4.0, ponieważ HDI 3.6 jest objęty podstawowym wsparciem i nie jest zalecany dla 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 magazynu Azure Data Lake Storage Gen2 to <source-container-fullpath>.

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

Wyczyść dane WAL FS dla klastra docelowego i 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 zookeeper lub węźle roboczym 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 HDI 3.6 bez przyspieszonych zapisów, a klaster docelowy ma przyspieszone zapisy

Wyczyść dane WAL FS dla klastra docelowego i 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 zookeeper lub węźle roboczym 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 HDI 3.6 bez przyspieszonych zapisów, a klaster docelowy nie ma przyspieszonych zapisów

Wyczyść dane systemu plików WAL 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 Zookeeper lub węźle roboczym 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 HDI 4.0 bez przyspieszonych zapisów, a klaster docelowy ma przyspieszone zapisy

Wyczyść dane WAL FS dla klastra docelowego i 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 zookeeper lub węźle roboczym 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 HDI 4.0 bez przyspieszonych zapisów, a klaster docelowy nie ma przyspieszonych zapisów

Wyczyść dane WAL FS dla klastra docelowego i skopiuj katalog WAL klastra źródłowego do HDFS klastra docelowego. Aby skopiować katalog, uruchom następujące polecenia w dowolnym węźle Zookeeper lub węźle roboczym 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. Z kontekstu użytkownika sudo -u hdfs, korzystając, skopiuj folder /hdp/apps/<new-version-name> i jego zawartość z folderu <destination-container-fullpath> do folderu /hdp/apps w obrębie <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
    

    Na 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, a następnie uruchom ponownie wszystkie wymagane usługi, jak wskazuje Ambari.

  3. Wskaż aplikację do klastra docelowego.

    Uwaga

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

  4. Rozpocznij przetwarzanie.

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

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

Migrowanie bazy danych HBase przy użyciu skryptów

  1. Wykonaj skrypt migrate-hbase-source.sh w klastrze źródłowym i migrate-hbase-dest.sh w klastrze docelowym. Aby wykonać te skrypty, wykonaj poniższe instrukcje.

    Uwaga

    Te skrypty nie kopiują starych list WALs bazy danych HBase w ramach migracji; dlatego skrypty nie mają być używane w klastrach z włączoną funkcją kopia zapasowa bazy danych HBase lub replikacja.

  2. W klastrze źródłowym

    sudo bash migrate-hbase-source.sh
    
  3. W klastrze docelowym

    sudo bash migrate-hbase-dest.sh  -f <src_default_Fs>
    

Obowiązkowy argument dla powyższego polecenia:

   -f, --src-fs
   The fs.defaultFS of the source cluster
   For example:
   -f wasb://anynamehbase0316encoder-2021-03-17t01-07-55-935z@anynamehbase0hdistorage.blob.core.windows.net

Następne kroki

Aby dowiedzieć się więcej na temat bazy danych Apache HBase i uaktualniania klastrów usługi HDInsight, zobacz następujące artykuły: