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:
- Zatrzymaj pozyskiwanie danych.
- Opróżnij
memstore
dane. - Zatrzymaj bazę danych HBase z systemu Ambari.
- W przypadku klastrów z przyspieszonymi zapisami utwórz kopię zapasową katalogu Write Ahead Log (WAL).
Przygotuj klaster docelowy:
- Utwórz klaster docelowy.
- Zatrzymaj bazę danych HBase z systemu Ambari.
- Czyszczenie danych usługi Zookeeper.
- Przełącz użytkownika na bazę danych HBase.
Ukończ migrację:
- Wyczyść docelowy system plików, zmigruj dane i usuń polecenie
/hbase/hbase.id
. - Czyszczenie i migrowanie pliku WAL.
- Uruchom wszystkie usługi z klastra docelowego Ambari.
- Sprawdź bazę danych HBase.
- 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
Zatrzymaj pozyskiwanie do źródłowego klastra HBase.
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 rozmiarumemstore
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 plikumemstores
. 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>"
Zaloguj się do systemu Apache Ambari w klastrze źródłowym za pomocą
https://<OLDCLUSTERNAME>.azurehdinsight.net
polecenia i zatrzymaj usługi HBase.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).
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
W witrynie Azure Portal skonfiguruj nowy docelowy klaster usługi HDInsight, który używa innego konta magazynu niż klaster źródłowy.
Zaloguj się do systemu Apache Ambari w nowym klastrze pod adresem
https://<NEWCLUSTERNAME>.azurehdinsight.net
i zatrzymaj usługi HBase.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
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.
- Klaster źródłowy to HDI 3.6 z przyspieszonymi zapisami, a klaster docelowy ma przyspieszone zapisy.
- Klaster źródłowy to HDI 3.6 bez przyspieszonych zapisów, a klaster docelowy ma przyspieszone zapisy.
- Klaster źródłowy to HDI 3.6 bez przyspieszonych zapisów, a klaster docelowy nie ma przyspieszonych zapisów.
- Klaster źródłowy to HDI 4.0 z przyspieszonymi zapisami, a klaster docelowy ma przyspieszone zapisy.
- Klaster źródłowy to HDI 4.0 bez przyspieszonych zapisów, a klaster docelowy ma przyspieszone zapisy.
- Klaster źródłowy to HDI 4.0 bez przyspieszonych zapisów, a klaster docelowy nie ma przyspieszonych zapisó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 jestwasbs://<container-name>@<storageaccount>.blob.core.windows.net
- Typ
<container-fullpath>
magazynu azure Data Lake Storage Gen2 toabfs://<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.
Uruchom polecenie AzCopy:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
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
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 /
Usuń
hbase.id
, uruchamiając poleceniehdfs dfs -rm /hbase/hbase.id
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
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
Usuń
hbase.id
, uruchamiając poleceniehdfs dfs -rm /hbase/hbase.id
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
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
Usuń
hbase.id
, uruchamiając poleceniehdfs dfs -rm /hbase/hbase.id
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
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 /
Usuń
hbase.id
, uruchamiając poleceniehdfs dfs -rm /hbase/hbase.id
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
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 /
Usuń
hbase.id
, uruchamiając poleceniehdfs dfs -rm /hbase/hbase.id
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
W klastrze docelowym zapisz zmiany i uruchom ponownie wszystkie wymagane usługi, zgodnie z poleceniem Ambari.
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.
Rozpocznij pozyskiwanie.
Sprawdź spójność bazy danych HBase i proste operacje języka DDL (Data Definition Language) i języka manipulowania danymi (DML).
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: