Migrieren von Apache HBase zu einer neuen Version und einem neuen Speicherkonto
In diesem Artikel wird erläutert, wie Sie ein Update für Ihren Apache HBase-Cluster in Azure HDInsight auf eine neuere Version mit einem anderen Azure Storage-Konto durchführen.
Dieser Artikel ist nur relevant, wenn Sie verschiedene Speicherkonten für Ihre Quell- und Zielcluster verwenden müssen. Informationen zum Upgrade von Versionen mit demselben Speicherkonto für Ihre Quell- und Zielcluster finden Sie unter Migrieren eines Apache HBase-Clusters zu einer neuen Version.
Die Downtime durch das Upgrade sollte nur wenige Minuten dauern. Sie ist auf das Leeren sämtlicher In-Memory-Daten und auf die Konfiguration und den Neustart der Dienste im neuen Cluster zurückzuführen. Die Ergebnisse variieren je nach Kontenanzahl, Datenmenge und anderen Variablen.
Überprüfen der Apache HBase-Kompatibilität
Vergewissern Sie sich vor dem Apache HBase-Upgrade, dass die HBase-Versionen im Quell- und Zielcluster kompatibel sind. Überprüfen Sie die HBase-Versionskompatibilitätsmatrix und die Versionshinweise im HBase-Referenzleitfaden, um sicherzustellen, dass Ihre Anwendung mit der neuen Version kompatibel ist.
Hier sehen Sie ein Beispiel für eine Kompatibilitätsmatrix. Hierbei steht „Y“ für Kompatibilität und „N“ für eine potenzielle Inkompatibilität.
Kompatibilitätstyp | Hauptversion | Nebenversion | Patch |
---|---|---|---|
Client-Server-Verbindungskompatibilität | N | J | J |
Server-Server-Kompatibilität | N | J | J |
Dateiformatkompatibilität | N | J | J |
Client-API-Kompatibilität | N | J | J |
Client-Binärkompatibilität | N | N | J |
Serverseitig eingeschränkte API-Kompatibilität | |||
Stable | N | J | J |
In Entwicklung | N | N | J |
Instabil | N | N | N |
Abhängigkeitskompatibilität | N | J | J |
Betriebskompatibilität | N | N | J |
Kritische Inkompatibilitäten sollten in den Versionshinweisen für die HBase-Version beschrieben werden. Testen Sie Ihre Anwendung in einem Cluster mit der Zielversion von HDInsight und HBase.
Weitere Informationen über HDInsight-Versionen und die Kompatibilität finden Sie unter Azure HDInsight-Versionen.
Übersicht über die Migration von Apache HBase-Clustern
Führen Sie die folgenden einfachen Schritte aus, um Upgrade und Migration für einen Apache HBase-Cluster in Azure HDInsight auf ein neues Speicherkonto durchzuführen. Ausführlichere Anweisungen finden Sie in den ausführlichen Schritten und Befehlen.
Bereiten Sie den Quellcluster vor:
- Beenden Sie die Datenerfassung.
memstore
Daten leeren.- Beenden Sie HBase über Ambari.
- Sichern Sie das WAL-Verzeichnis (Write Ahead Log), wenn Sie Cluster mit beschleunigten Schreibvorgängen verwenden.
Bereiten Sie den Zielcluster vor:
- Erstellen Sie den Zielcluster.
- Beenden Sie HBase über Ambari.
- Bereinigen Sie die Zookeeper-Daten.
- Wechseln zum Benutzer „HBase“.
Führen Sie die Migration durch:
- Bereinigen Sie das Zieldateisystem, migrieren Sie die Daten, und entfernen Sie
/hbase/hbase.id
. - Bereinigen und migrieren Sie das WAL-Verzeichnis.
- Starten Sie alle Dienste über den Ambari-Zielcluster.
- Überprüfen Sie HBase.
- Löschen Sie den Quellcluster.
Ausführliche Schritte und Befehle für die Migration
Verwenden Sie die folgenden ausführlichen Schritte und Befehle zum Migrieren Ihres Apache HBase-Clusters mit einem neuen Speicherkonto.
Vorbereiten des Quellclusters
Beenden Sie die Datenerfassung im HBase-Quellcluster.
Leeren Sie den HBase-Quellcluster, für den Sie das Upgrade durchführen.
HBase schreibt eingehende Daten in einen In-Memory-Speicher, der als
memstore
bezeichnet wird. Wenn dermemstore
eine bestimmte Größe erreicht, wird er von HBase zur langfristigen Speicherung im Speicherkonto des Clusters auf den Datenträger geschrieben. Beim Löschen des Quellclusters nach einem Upgrade werden auch alle Daten in dermemstores
Datei gelöscht. Zum Beibehalten der Daten müssen Sie diememstore
-Instanzen aller Tabellen manuell auf den Datenträger leeren, bevor Sie das Upgrade durchführen.Sie können die
memstore
-Daten leeren, indem Sie das Skript flush_all_tables.sh über das GitHub-Repository hbase-utils durchführen.Sie können die
memstore
-Daten auch leeren, indem Sie den folgenden HBase-Shellbefehl im HDInsight-Cluster ausführen:hbase shell flush "<table-name>"
Melden Sie sich mit
https://<OLDCLUSTERNAME>.azurehdinsight.net
bei Apache Ambari auf dem Quellcluster an, und beenden Sie die HBase-Dienste.Aktivieren Sie über die Eingabeaufforderung zur Bestätigung das Kontrollkästchen, um den Wartungsmodus für HBase zu aktivieren.
Weitere Informationen zur Verbindungsherstellung mit Ambari sowie zur Verwendung finden Sie unter Verwalten von HDInsight-Clustern mithilfe der Ambari-Webbenutzeroberfläche.
Wenn Ihr HBase-Quellcluster nicht über das Feature Beschleunigte Schreibvorgänge verfügt, überspringen Sie diesen Schritt. Sichern Sie für HBase-Quellcluster mit beschleunigten Schreibvorgängen das WAL-Verzeichnis unter HDFS, indem Sie die folgenden Befehle über eine SSH-Sitzung auf einem beliebigen Zookeeper-Knoten des Quellclusters oder Workerknoten ausführen.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Vorbereiten des Zielclusters
Richten Sie im Azure-Portal ein neues HDInsight-Zielcluster ein, der ein anderes Speicherkonto als das Quellcluster verwendet.
Melden Sie sich auf dem neuen Cluster unter
https://<NEWCLUSTERNAME>.azurehdinsight.net
bei Apache Ambari an, und beenden Sie die HBase-Dienste.Bereinigen Sie die Zookeeper-Daten auf dem Zielcluster, indem Sie die folgenden Befehle auf einem beliebigen Zookeeper-Knoten oder -Workerknoten ausführen:
hbase zkcli rmr /hbase-unsecure quit
Wechseln Sie den Benutzer in „HBase“, indem Sie
sudo su hbase
ausführen.
Bereinigen und Migrieren von Dateisystem und WAL
Führen Sie die folgenden Befehle abhängig von Ihrer HDI-Quellversion und dem Vorhandensein beschleunigter Schreibvorgänge auf Ihren Quell- und Zielclustern aus. Der Zielcluster weist immer HDI-Version 4.0 auf, da HDI 3.6 im Basic-Support enthalten ist und für neue Cluster nicht empfohlen wird.
- Der Quellcluster entspricht HDI 3.6 mit beschleunigten Schreibvorgängen, und der Zielcluster verfügt über beschleunigte Schreibvorgänge.
- Der Quellcluster entspricht HDI 3.6 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt über beschleunigte Schreibvorgänge.
- Der Quellcluster entspricht HDI 3.6 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt nicht über beschleunigte Schreibvorgänge.
- Der Quellcluster entspricht HDI 4.0 mit beschleunigten Schreibvorgängen, und der Zielcluster verfügt über beschleunigte Schreibvorgänge.
- Der Quellcluster entspricht HDI 4.0 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt über beschleunigte Schreibvorgänge.
- Der Quellcluster entspricht HDI 4.0 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt nicht über beschleunigte Schreibvorgänge.
Für das Speicherkonto entspricht <container-endpoint-url>
der URL https://<storageaccount>.blob.core.windows.net/<container-name>
. Übergeben Sie das SAS-Token für das Speicherkonto ganz am Ende der URL.
- Für den WASB-Speichertyp entspricht
<container-fullpath>
dem Pfadwasbs://<container-name>@<storageaccount>.blob.core.windows.net
. - Für den Azure Data Lake Storage Gen2-Speichertyp entspricht
<container-fullpath>
dem Pfadabfs://<container-name>@<storageaccount>.dfs.core.windows.net
.
Kopierbefehle
Der HDFS-Kopierbefehl lautet hdfs dfs <copy properties starting with -D> -cp
.
Verwenden Sie hadoop distcp
, um die Leistung beim Kopieren von Dateien, die nicht in einem Seitenblob enthalten sind, zu verbessern: hadoop distcp <copy properties starting with -D>
Um den Schlüssel des Speicherkontos zu übergeben, verwenden Sie:
-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
Sie können auch AzCopy verwenden, um die Leistung beim Kopieren von HBase-Datendateien zu verbessern.
Führen Sie den AzCopy-Befehl aus:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
Führen Sie diesen Schritt nach dem Kopieren durch, wenn das Zielspeicherkonto ein Azure-Blobspeicher ist. Überspringen Sie diesen Schritt, wenn das Zielspeicherkonto ein Data Lake Storage Gen2-Konto ist.
Der Hadoop WASB-Treiber verwendet spezielle Blobs der Größe 0, die jedem Verzeichnis entsprechen. AzCopy überspringt diese Dateien beim Kopieren. Einige WASB-Vorgänge verwenden diese Blobs, daher müssen Sie sie im Zielcluster erstellen. Führen Sie den folgenden Hadoop-Befehl auf einem beliebigen Knoten im Zielcluster aus, um die Blobs zu erstellen:
sudo -u hbase hadoop fs -chmod -R 0755 /hbase
Sie können AzCopy unter Erste Schritte mit AzCopy herunterladen. Weitere Informationen zur Verwendung von AzCopy finden Sie unter azcopy copy.
Der Quellcluster entspricht HDI 3.6 oder HDI 4.0 mit beschleunigten Schreibvorgängen, und der Zielcluster verfügt über beschleunigte Schreibvorgänge
Führen Sie die folgenden Befehle aus, um das Dateisystem zu bereinigen und die Daten zu migrieren:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Entfernen Sie
hbase.id
, indem Siehdfs dfs -rm /hbase/hbase.id
ausführen.Führen Sie zum Bereinigten und Migrieren von WAL die folgenden Befehle aus:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
Der Quellcluster entspricht HDI 3.6 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt über beschleunigte Schreibvorgänge
Führen Sie die folgenden Befehle aus, um das Dateisystem zu bereinigen und die Daten zu migrieren:
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
Entfernen Sie
hbase.id
, indem Siehdfs dfs -rm /hbase/hbase.id
ausführen.Führen Sie zum Bereinigten und Migrieren von WAL die folgenden Befehle aus:
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
Der Quellcluster entspricht HDI 3.6 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt nicht über beschleunigte Schreibvorgänge
Führen Sie die folgenden Befehle aus, um das Dateisystem zu bereinigen und die Daten zu migrieren:
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
Entfernen Sie
hbase.id
, indem Siehdfs dfs -rm /hbase/hbase.id
ausführen.Führen Sie zum Bereinigten und Migrieren von WAL die folgenden Befehle aus:
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
Der Quellcluster entspricht HDI 4.0 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt über beschleunigte Schreibvorgänge
Führen Sie die folgenden Befehle aus, um das Dateisystem zu bereinigen und die Daten zu migrieren:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Entfernen Sie
hbase.id
, indem Siehdfs dfs -rm /hbase/hbase.id
ausführen.Führen Sie zum Bereinigten und Migrieren von WAL die folgenden Befehle aus:
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
Der Quellcluster entspricht HDI 4.0 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt nicht über beschleunigte Schreibvorgänge
Führen Sie die folgenden Befehle aus, um das Dateisystem zu bereinigen und die Daten zu migrieren:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Entfernen Sie
hbase.id
, indem Siehdfs dfs -rm /hbase/hbase.id
ausführen.Führen Sie zum Bereinigten und Migrieren von WAL die folgenden Befehle aus:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
Fertigstellen der Migration
Speichern Sie Ihre Änderungen im Zielcluster, und starten Sie alle erforderlichen Dienste wie von Ambari angegeben neu.
Verweisen Sie Ihre Anwendung auf den Zielcluster.
Hinweis
Der statische DNS-Name Ihrer Anwendung wird geändert, wenn Sie das Upgrade durchführen. Anstatt eine Hartcodierung für diesen DNS-Namen durchzuführen, können Sie einen CNAME-Eintrag in den DNS-Einstellungen Ihres Domänennamens konfigurieren, die auf den Namen des Clusters verweisen. Eine weitere Möglichkeit ist die Verwendung einer Konfigurationsdatei für Ihre Anwendung, die Sie ohne erneute Bereitstellung aktualisieren können.
Starten Sie die Datenerfassung.
Überprüfen Sie die HBase-Konsistenz und die einfachen DDL- (Datendefinitionssprache) und DML-Vorgänge (Datenbearbeitungssprache).
Wenn der Zielcluster zufriedenstellend ist, löschen Sie den Quellcluster.
Nächste Schritte
Weitere Informationen zu Apache HBase und zum Upgraden von HDInsight-Clustern finden Sie in den folgenden Artikeln: