Migrieren eines Apache HBase-Clusters zu einer neuen Version
In diesem Artikel wird erläutert, wie Sie ein Update für Ihren Apache HBase-Cluster in Azure HDInsight auf eine neuere Version durchführen.
Dieser Artikel ist nur relevant, wenn Sie dasselbe Azure Storage-Konto für Ihre Quell- und Zielcluster verwenden. Informationen zum Durchführen eines Upgrades mit einem neuen oder anderen Azure Storage-Konto für Ihren Zielcluster finden Sie unter Migrieren von Apache HBase zu einer neuen Version mit einem neuen Azure Storage-Konto.
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 |
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 ein Upgrade für Ihre Apache HBase-Cluster in Azure HDInsight durchzuführen. Ausführliche Anweisungen finden Sie in den detaillierten Schritten und Befehlen, oder verwenden Sie für eine automatisierte Migration die Skripts aus dem Abschnitt Migrieren von HBase mithilfe von Skripts.
Bereiten Sie den Quellcluster vor:
- Beenden Sie die Datenerfassung.
- Leeren Sie die Memstore-Daten.
- 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.
- Ändern Sie
fs.defaultFS
in der HDFS-Dienstkonfiguration so, dass auf den ursprünglichen Quellclustercontainer verwiesen wird. - Ändern Sie
hbase.rootdir
in der HBase-Dienstkonfiguration so, dass auf den ursprünglichen Quellclustercontainer verwiesen wird, wenn Sie Cluster mit beschleunigten Schreibvorgängen verwenden. - Bereinigen Sie die Zookeeper-Daten.
Führen Sie die Migration durch:
- Bereinigen und migrieren Sie das WAL-Verzeichnis.
- Kopieren Sie die Apps aus dem Standardcontainer des Zielclusters in den ursprünglichen Quellcontainer.
- 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 diese ausführlichen Schritte und Befehle zum Migrieren Ihres Apache HBase-Clusters.
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 der Memstore 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 den Memstore-Instanzen gelöscht. Zum Beibehalten der Daten müssen Sie die Memstore-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 Azure hbase-utils durchführen.
Sie können die Memstore-Daten auch leeren, indem Sie den folgenden HBase-Shellbefehl über den 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 oder -Workerknoten des Quellclusters 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 einen neuen HDInsight-Zielcluster mithilfe desselben Speicherkontos ein, das für den Quellcluster verwendet wurde, aber verwenden Sie einen anderen Containernamen:
Melden Sie sich auf dem neuen Cluster unter
https://<NEWCLUSTERNAME>.azurehdinsight.net
bei Apache Ambari an, und beenden Sie die HBase-Dienste.Ändern Sie unter Services>HDFS>Configs>Advanced>Advanced core-site (Dienste > HDFS > Konfiguration > Erweitert > Core-Website (erweitert)) die HDFS-Einstellung
fs.defaultFS
, sodass diese auf den Containernamen des ursprünglichen Quellclusters verweist. Beispielsweise sollte die Einstellung im folgenden Screenshot inwasbs://hbase-upgrade-old-2021-03-22
geändert werden.Wenn Ihr Zielcluster über das Feature für beschleunigte Schreibvorgänge verfügt, ändern Sie den Pfad
hbase.rootdir
so, dass er auf den Containernamen des ursprünglichen Quellclusters verweist. Der folgende Pfad sollte beispielsweise inhbase-upgrade-old-2021-03-22
geändert werden. Überspringen Sie diesen Schritt, wenn Ihr Cluster nicht über beschleunigte Schreibvorgänge verfügt.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
Bereinigen und Migrieren des WAL-Verzeichnisses
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 HDFS-Kopierbefehl lautet
hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution
.
Hinweis
- Für den WASB-Speichertyp entspricht
<source-container-fullpath>
dem Pfadwasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net
. - Für den Azure Data Lake Storage Gen2-Speichertyp entspricht
<source-container-fullpath>
dem Pfadabfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net
.
- 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.
Der Quellcluster entspricht HDI 3.6 oder HDI 4.0 mit beschleunigten Schreibvorgängen, und der Zielcluster verfügt über beschleunigte Schreibvorgänge
Bereinigen Sie die WAL FS-Daten für den Zielcluster, und kopieren Sie das WAL-Verzeichnis aus dem Quellcluster in die HDFS-Instanz des Zielclusters. Kopieren Sie das Verzeichnis, indem Sie die folgenden Befehle auf einem beliebigen Zookeeper-Knoten oder -Workerknoten im Zielcluster ausführen:
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/
Der Quellcluster entspricht HDI 3.6 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt über beschleunigte Schreibvorgänge
Bereinigen Sie die WAL FS-Daten für den Zielcluster, und kopieren Sie das WAL-Verzeichnis aus dem Quellcluster in die HDFS-Instanz des Zielclusters. Kopieren Sie das Verzeichnis, indem Sie die folgenden Befehle auf einem beliebigen Zookeeper-Knoten oder -Workerknoten im Zielcluster ausführen:
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
Der Quellcluster entspricht HDI 3.6 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt nicht über beschleunigte Schreibvorgänge
Bereinigen Sie die WAL FS-Daten für den Zielcluster, und kopieren Sie das WAL-Verzeichnis des Quellclusters in die HDFS-Instanz des Zielclusters. Führen Sie zum Kopieren des Verzeichnisses die folgenden Befehle auf einem beliebigen Zookeeper-Knoten oder -Workerknoten im Zielcluster aus:
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
Der Quellcluster entspricht HDI 4.0 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt über beschleunigte Schreibvorgänge
Bereinigen Sie die WAL FS-Daten für den Zielcluster, und kopieren Sie das WAL-Verzeichnis aus dem Quellcluster in die HDFS-Instanz des Zielclusters. Kopieren Sie das Verzeichnis, indem Sie die folgenden Befehle auf einem beliebigen Zookeeper-Knoten oder -Workerknoten im Zielcluster ausführen:
sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal
Der Quellcluster entspricht HDI 4.0 ohne beschleunigte Schreibvorgänge, und der Zielcluster verfügt nicht über beschleunigte Schreibvorgänge
Bereinigen Sie die WAL FS-Daten für den Zielcluster, und kopieren Sie das WAL-Verzeichnis des Quellclusters in die HDFS-Instanz des Zielclusters. Führen Sie zum Kopieren des Verzeichnisses die folgenden Befehle auf einem beliebigen Zookeeper-Knoten oder -Workerknoten im Zielcluster aus:
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 /
Fertigstellen der Migration
Kopieren Sie mithilfe des
sudo -u hdfs
-Benutzerkontexts den Ordner/hdp/apps/<new-version-name>
und dessen Inhalte aus<destination-container-fullpath>
in den Ordner/hdp/apps
unter<source-container-fullpath>
. Sie können den Ordner kopieren, indem Sie die folgenden Befehle im Zielcluster ausführen:sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
Beispiel:
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
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.
Migrieren von HBase mithilfe von Skripts
Führen Sie das Skript migrate-hbase-source.sh für den Quellcluster und migrate-hbase-dest.sh für den Zielcluster aus. Führen Sie diese Skripts anhand der folgenden Anweisungen aus.
Hinweis
Diese Skripts kopieren die alten WALs von HBase im Rahmen der Migration nicht. Daher dürfen die Skripts nicht in Clustern verwendet werden, für die die Funktion für die HBase-Sicherung oder -Replikation aktiviert ist.
Im Quellcluster
sudo bash migrate-hbase-source.sh
Im Zielcluster
sudo bash migrate-hbase-dest.sh -f <src_default_Fs>
Obligatorisches Argument für den obigen Befehl:
-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
Nächste Schritte
Weitere Informationen zu Apache HBase und zum Upgraden von HDInsight-Clustern finden Sie in den folgenden Artikeln: