Migrowanie bazy danych Apache HBase do nowej wersji i konta magazynowego
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 z tym samym kontem Storage 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 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 pomocnicza | 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 |
Uwagi o wersji bazy danych HBase powinny opisywać wszelkie przełomowe niekompatybilności. 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 magazynowania, wykonaj podstawowe kroki podane poniżej. Aby uzyskać szczegółowe instrukcje, zobacz szczegółowe kroki i polecenia.
Przygotuj klaster źródłowy:
- Zatrzymaj pozyskiwanie danych.
- Opróżnij
memstore
dane. - Zatrzymaj HBase w 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 HBase w 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 przechowywania.
Przygotowywanie klastra źródłowego
Zatrzymaj przesyłanie 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
, HBase zapisuje ją na dysk w celu długoterminowego przechowywania na koncie magazynowym 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 zapisać każdą tabelęmemstore
na dysku przed uaktualnieniem.Można opróżnić dane, uruchamiając skrypt
memstore
z repozytorium GitHub hbase-utils.Możesz również przepłukać
memstore
dane, uruchamiając następujące polecenie powłoki HBase z wnętrza klastra HDInsight.hbase shell flush "<table-name>"
Zaloguj się do Apache Ambari w klastrze źródłowym z
https://<OLDCLUSTERNAME>.azurehdinsight.net
, 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 klastrów HBase z włączeniem funkcji przyspieszonych zapisów, wykonaj kopię zapasową katalogu WAL w HDFS, uruchamiając następujące polecenia z sesji SSH na dowolnym węźle Zookeeper lub węźle roboczym źródłowego klastra.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Przygotowywanie klastra docelowego
W portalu Azure utwórz nowy docelowy klaster usługi HDInsight korzystający z 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
.
Wyczyść i zmigruj system plików oraz 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 ma zawsze wersję HDI 4.0, ponieważ HDI 3.6 jest objęty podstawowym wsparciem i nie jest zalecany dla 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 przechowywania to https://<storageaccount>.blob.core.windows.net/<container-name>
. Przekaż token SAS dla konta przechowywania na końcu adresu URL.
- Dla
<container-fullpath>
typu magazynu WASB jestwasbs://<container-name>@<storageaccount>.blob.core.windows.net
- Typ magazynu Azure Data Lake Storage Gen2 to
<container-fullpath>
.
Polecenia kopiuj
Polecenie kopiowania systemu plików HDFS to hdfs dfs <copy properties starting with -D> -cp
Użyj hadoop distcp
dla lepszej wydajności podczas kopiowania plików, które nie są zapisane jako stronicowy obiekt 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 magazynowe to Azure Blob Storage, wykonaj ten krok po skopiowaniu. Jeśli docelowym kontem magazynu jest Data Lake Storage Gen2, pomiń ten krok.
Sterownik WASB dla Hadoop używa specjalnych obiektów blobów o rozmiarze 0, które odpowiadają każdemu katalogowi. Narzędzie AzCopy pomija te pliki podczas kopiowania. Niektóre operacje WASB używają tych blobów, dlatego musisz 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 przetwarzanie.
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: