Udostępnij za pośrednictwem


Migrowanie bazy danych Apache HBase do nowej wersji i konta magazynu

W tym artykule omówiono sposób aktualizowania klastra Apache HBase w usłudze Azure HDInsight do nowszej wersji przy użyciu innego konta usługi Azure Storage.

Ten artykuł ma zastosowanie tylko wtedy, gdy musisz używać różnych kont magazynu dla klastrów źródłowych i docelowych. Aby uaktualnić wersje przy użyciu tego samego konta magazynu dla klastrów źródłowych i docelowych, zobacz Migrowanie bazy danych Apache HBase do nowej wersji.

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 bazy danych HBase i informacje 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 wskazuje zgodność, a N wskazuje potencjalną niezgodność:

Typ zgodności Wersja główna Wersja pomocnicza Patch
Zgodność przewodu klienta-serwera N Y Y
Zgodność serwera z serwerem N Y Y
Zgodność formatu pliku N Y Y
Zgodność interfejsu API klienta N Y Y
Zgodność danych binarnych klienta N N Y
Zgodność interfejsu 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

Informacje o wersji bazy danych HBase powinny opisywać wszelkie niezgodności powodujące niezgodność. Przetestuj aplikację w klastrze z uruchomioną docelową wersją usług HDInsight i HBase.

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ć i przeprowadzić migrację klastra Apache HBase w usłudze Azure HDInsight do nowego konta magazynu, wykonaj następujące podstawowe kroki. Aby uzyskać szczegółowe instrukcje, zobacz szczegółowe kroki i polecenia.

Przygotuj klaster źródłowy:

  1. Zatrzymaj pozyskiwanie danych.
  2. Opróżnij memstore dane.
  3. Zatrzymaj bazę danych HBase z systemu 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 bazę danych HBase z systemu Ambari.
  3. Czyszczenie danych usługi Zookeeper.
  4. Przełącz użytkownika na bazę danych HBase.

Ukończ migrację:

  1. Wyczyść docelowy system plików, zmigruj dane i usuń polecenie /hbase/hbase.id.
  2. Czyszczenie i migrowanie pliku WAL.
  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 przy użyciu nowego konta magazynu.

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 do magazynu w pamięci o nazwie memstore. Po osiągnięciu określonego rozmiaru memstore baza HBase opróżni ją na dysk na potrzeby długoterminowego magazynu na koncie magazynu klastra. Usunięcie klastra źródłowego po uaktualnieniu powoduje również usunięcie wszystkich danych w pliku memstores. Aby zachować dane, należy ręcznie opróżnić memstore tabelę na dysk przed uaktualnieniem.

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

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

    hbase shell
    flush "<table-name>"
    
  3. Zaloguj się do systemu Apache Ambari w klastrze źródłowym za pomocą https://<OLDCLUSTERNAME>.azurehdinsight.netpolecenia 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 źródłowym węźle zookeeper klastra lub węźle procesu roboczego.

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

Przygotowywanie klastra docelowego

  1. W witrynie Azure Portal skonfiguruj nowy docelowy klaster usługi HDInsight, który używa innego konta magazynu niż klaster źródłowy.

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

  3. 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
    
  4. Przełącz użytkownika na bazę danych HBase, uruchamiając polecenie sudo su hbase.

Czyszczenie i migrowanie systemu plików i 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 zapisy. Klaster docelowy jest zawsze hdi w wersji 4.0, ponieważ usługa HDI 3.6 jest obsługiwana w warstwie Podstawowa i nie jest zalecana w przypadku nowych klastrów.

Element <container-endpoint-url> dla konta magazynu to https://<storageaccount>.blob.core.windows.net/<container-name>. Przekaż token SAS dla konta magazynu na samym końcu adresu URL.

  • Dla <container-fullpath> typu magazynu WASB jest wasbs://<container-name>@<storageaccount>.blob.core.windows.net
  • Typ <container-fullpath> magazynu azure Data Lake Storage Gen2 to abfs://<container-name>@<storageaccount>.dfs.core.windows.net.

Polecenia kopiowania

Polecenie kopiowania systemu plików HDFS to hdfs dfs <copy properties starting with -D> -cp

Użyj polecenia hadoop distcp , aby uzyskać lepszą wydajność podczas kopiowania plików, które nie są w stronicowym obiekcie blob: hadoop distcp <copy properties starting with -D>

Aby przekazać klucz konta magazynu, użyj:

  • -Dfs.azure.account.key.<storageaccount>.blob.core.windows.net='<storage account key>'
  • -Dfs.azure.account.keyprovider.<storageaccount>.blob.core.windows.net=org.apache.hadoop.fs.azure.SimpleKeyProvider

Narzędzie AzCopy umożliwia również lepszą wydajność podczas kopiowania plików danych bazy danych HBase.

  1. Uruchom polecenie AzCopy:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. Jeśli docelowe konto magazynu to Azure Blob Storage, wykonaj ten krok po skopiowaniu. Jeśli docelowe konto magazynu to Data Lake Storage Gen2, pomiń ten krok.

    Sterownik WASB usługi Hadoop używa specjalnych obiektów blob o rozmiarze 0 odpowiadających każdemu katalogowi. Narzędzie AzCopy pomija te pliki podczas kopiowania. Niektóre operacje WASB używają tych obiektów blob, więc należy je utworzyć w klastrze docelowym. Aby utworzyć obiekty blob, uruchom następujące polecenie usługi Hadoop z dowolnego węzła w klastrze docelowym:

    sudo -u hbase hadoop fs -chmod -R 0755 /hbase
    

Narzędzie AzCopy można pobrać z narzędzia Get started with AzCopy (Rozpoczynanie pracy z narzędziem AzCopy). Aby uzyskać więcej informacji na temat korzystania z narzędzia AzCopy, zobacz azcopy copy.

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

  1. Aby wyczyścić system plików i przeprowadzić migrację danych, uruchom następujące polecenia:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Usuń hbase.id , uruchamiając polecenie hdfs dfs -rm /hbase/hbase.id

  3. Aby wyczyścić i zmigrować plik WAL, uruchom następujące polecenia:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
    

Klaster źródłowy to HDI 3.6 bez przyspieszonych zapisów, a klaster docelowy ma przyspieszone zapisy

  1. Aby wyczyścić system plików i przeprowadzić migrację danych, uruchom następujące polecenia:

    hdfs dfs -rm -r /hbase 
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase /
    hdfs dfs -rm -r /hbase/*WALs
    
  2. Usuń hbase.id , uruchamiając polecenie hdfs dfs -rm /hbase/hbase.id

  3. Aby wyczyścić i zmigrować plik WAL, uruchom następujące polecenia:

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

Klaster źródłowy to HDI 3.6 bez przyspieszonych zapisów, a klaster docelowy nie ma przyspieszonych zapisów

  1. Aby wyczyścić system plików i przeprowadzić migrację danych, uruchom następujące polecenia:

    hdfs dfs -rm -r /hbase 
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase /
    hdfs dfs -rm -r /hbase/*WALs
    
  2. Usuń hbase.id , uruchamiając polecenie hdfs dfs -rm /hbase/hbase.id

  3. Aby wyczyścić i zmigrować plik WAL, uruchom następujące polecenia:

    hdfs dfs -rm -r /hbase-wals/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -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

  1. Aby wyczyścić system plików i przeprowadzić migrację danych, uruchom następujące polecenia:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Usuń hbase.id , uruchamiając polecenie hdfs dfs -rm /hbase/hbase.id

  3. Aby wyczyścić i zmigrować plik WAL, uruchom następujące polecenia:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals hdfs://<destination-cluster>/hbasewal
    

Klaster źródłowy to HDI 4.0 bez przyspieszonych zapisów, a klaster docelowy nie ma przyspieszonych zapisów

  1. Aby wyczyścić system plików i przeprowadzić migrację danych, uruchom następujące polecenia:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Usuń hbase.id , uruchamiając polecenie hdfs dfs -rm /hbase/hbase.id

  3. Aby wyczyścić i zmigrować plik WAL, uruchom następujące polecenia:

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

Kończenie migracji

  1. W klastrze docelowym zapisz zmiany i uruchom ponownie wszystkie wymagane usługi, zgodnie z poleceniem Ambari.

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

  3. Rozpocznij pozyskiwanie.

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

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

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: