Een Apache HBase-cluster migreren naar een nieuwe versie
In dit artikel wordt beschreven hoe u uw Apache HBase-cluster in Azure HDInsight bijwerkt naar een nieuwere versie.
Dit artikel is alleen van toepassing als u hetzelfde Azure Storage-account gebruikt voor uw bron- en doelclusters. Zie Apache HBase migreren naar een nieuwe versie met een nieuw opslagaccount met een nieuw opslagaccount voor uw doelcluster als u een upgrade wilt uitvoeren met een nieuw opslagaccount.
De downtime tijdens het upgraden duurt slechts enkele minuten. Deze downtime wordt veroorzaakt door de stappen voor het leegmaken van alle gegevens in het geheugen en de tijd die nodig is om de services op het nieuwe cluster te configureren en opnieuw op te starten. Uw resultaten variëren, afhankelijk van het aantal knooppunten, de hoeveelheid gegevens en andere variabelen.
Compatibiliteit met Apache HBase controleren
Voordat u Apache HBase bijwerkt, moet u ervoor zorgen dat de HBase-versies op de bron- en doelclusters compatibel zijn. Bekijk de compatibiliteitsmatrix voor HBase-versies en releaseopmerkingen in de HBase-referentiehandleiding om ervoor te zorgen dat uw toepassing compatibel is met de nieuwe versie.
Hier volgt een voorbeeld van een compatibiliteitsmatrix. Y geeft compatibiliteit aan en N duidt op een mogelijke incompatibiliteit:
Compatibiliteitstype | Primaire versie | Secundaire versie | Patch |
---|---|---|---|
Client-Server draadcompatibiliteit | N | J | J |
Server-Server compatibiliteit | N | J | J |
Compatibiliteit van bestandsindelingen | N | J | J |
Client-API-compatibiliteit | N | J | J |
Binaire clientcompatibiliteit | N | N | J |
Beperkte API-compatibiliteit aan serverzijde | |||
Stabiel | N | J | J |
Evoluerende | N | N | J |
Unstable | N | N | N |
Compatibiliteit met afhankelijkheden | N | J | J |
Operationele compatibiliteit | N | N | J |
Zie Azure HDInsight-versies voor meer informatie over HDInsight-versies en -compatibiliteit.
Overzicht van migratie van Apache HBase-clusters
Voer de volgende basisstappen uit om uw Apache HBase-cluster in Azure HDInsight te upgraden. Zie de gedetailleerde stappen en opdrachten voor gedetailleerde instructies of gebruik de scripts uit de sectie HBase migreren met behulp van scripts voor geautomatiseerde migratie.
Bereid het broncluster voor:
- Stop de gegevensopname.
- Memstore-gegevens leegmaken.
- Stop HBase vanuit Ambari.
- Voor clusters met versnelde schrijfbewerkingen maakt u een back-up van de WAL-map (Write Ahead Log).
Bereid het doelcluster voor:
- Maak het doelcluster.
- Stop HBase vanuit Ambari.
- Werk
fs.defaultFS
bij in HDFS-serviceconfiguraties om te verwijzen naar de oorspronkelijke bronclustercontainer. - Voor clusters met versnelde schrijfbewerkingen werkt
hbase.rootdir
u bij in HBase-serviceconfiguraties om te verwijzen naar de oorspronkelijke bronclustercontainer. - Zookeeper-gegevens opschonen.
Voltooi de migratie:
- Schoon de WAL op en migreer deze.
- Kopieer apps van de standaardcontainer van het doelcluster naar de oorspronkelijke broncontainer.
- Start alle services vanuit het Ambari-doelcluster.
- Controleer HBase.
- Verwijder het broncluster.
Gedetailleerde migratiestappen en -opdrachten
Gebruik deze gedetailleerde stappen en opdrachten om uw Apache HBase-cluster te migreren.
Het broncluster voorbereiden
Stop de opname naar het HBase-broncluster.
Maak het HBase-broncluster leeg dat u wilt upgraden.
HBase schrijft binnenkomende gegevens naar een in-memory archief dat een memstore wordt genoemd. Nadat de memstore een bepaalde grootte heeft bereikt, wordt deze door HBase leeggemaakt naar de schijf voor langetermijnopslag in het opslagaccount van het cluster. Als u het broncluster na een upgrade verwijdert, worden ook alle gegevens in de memstores verwijderd. Als u de gegevens wilt behouden, moet u de memstore van elke tabel handmatig leegmaken naar de schijf voordat u een upgrade uitvoert.
U kunt de memstore-gegevens leegmaken door het script flush_all_tables.sh uit te voeren vanuit de GitHub-opslagplaats azure hbase-utils.
U kunt memstore-gegevens ook leegmaken door de volgende HBase-shell-opdracht uit te voeren vanuit het HDInsight-cluster:
hbase shell flush "<table-name>"
Meld u aan bij Apache Ambari op het broncluster met
https://<OLDCLUSTERNAME>.azurehdinsight.net
en stop de HBase-services.Schakel bij de bevestigingsprompt het selectievakje in om de onderhoudsmodus voor HBase in te schakelen.
Zie HDInsight-clusters beheren met behulp van de Ambari-webinterface voor meer informatie over het maken van verbinding met en het gebruik van Ambari.
Als uw HBase-broncluster de functie Versnelde schrijfbewerkingen niet heeft, slaat u deze stap over. Voor HBase-bronclusters met versnelde schrijfbewerkingen maakt u een back-up van de WAL-map onder HDFS door de volgende opdrachten uit te voeren vanuit een SSH-sessie op een van de Zookeeper-knooppunten of werkknooppunten van het broncluster.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Het doelcluster voorbereiden
Stel in de Azure Portal een nieuw HDInsight-doelcluster in met hetzelfde opslagaccount als het broncluster, maar met een andere containernaam:
Meld u aan bij Apache Ambari op het nieuwe cluster op
https://<NEWCLUSTERNAME>.azurehdinsight.net
en stop de HBase-services.Wijzig onder Services>HDFS>Configs>Advanced>Advanced core-site de
fs.defaultFS
HDFS-instelling zodat deze verwijst naar de naam van de oorspronkelijke bronclustercontainer. De instelling in de volgende schermafbeelding moet bijvoorbeeld worden gewijzigd inwasbs://hbase-upgrade-old-2021-03-22
.Als uw doelcluster de functie Versnelde schrijfbewerkingen heeft, wijzigt u het
hbase.rootdir
pad zodat deze verwijst naar de naam van de oorspronkelijke bronclustercontainer. Het volgende pad moet bijvoorbeeld worden gewijzigd inhbase-upgrade-old-2021-03-22
. Als uw cluster geen versnelde schrijfbewerkingen heeft, slaat u deze stap over.Schoon de Zookeeper-gegevens op het doelcluster op door de volgende opdrachten uit te voeren in een Zookeeper-knooppunt of werkknooppunt:
hbase zkcli rmr /hbase-unsecure quit
WAL opschonen en migreren
Voer de volgende opdrachten uit, afhankelijk van uw HDI-bronversie en of de bron- en doelclusters versnelde schrijfbewerkingen hebben.
- Het doelcluster is altijd HDI versie 4.0, omdat HDI 3.6 basisondersteuning biedt en niet wordt aanbevolen voor nieuwe clusters.
- De HDFS-kopieeropdracht is
hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution
.
Notitie
- Het
<source-container-fullpath>
voor opslagtype WASB iswasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net
. - De
<source-container-fullpath>
Azure Data Lake Storage Gen2 voor het opslagtype isabfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net
.
- Het broncluster is HDI 3.6 met versnelde schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen.
- Het broncluster is HDI 3.6 zonder versnelde schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen.
- Het broncluster is HDI 3.6 zonder versnelde schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen.
- Het broncluster is HDI 4.0 met versnelde schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen.
- Het broncluster is HDI 4.0 zonder versnelde schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen.
- Het broncluster is HDI 4.0 zonder versnelde schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen.
Het broncluster is HDI 3.6 of HDI 4.0 met versnelde schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen
Schoon de WAL FS-gegevens voor het doelcluster op en kopieer de WAL-map van het broncluster naar de HDFS van het doelcluster. Kopieer de map door de volgende opdrachten uit te voeren in een Zookeeper-knooppunt of werkknooppunt in het doelcluster:
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/
Het broncluster is HDI 3.6 zonder versnelde schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen
Schoon de WAL FS-gegevens voor het doelcluster op en kopieer de WAL-map van het broncluster naar de HDFS van het doelcluster. Kopieer de map door de volgende opdrachten uit te voeren in een Zookeeper-knooppunt of werkknooppunt in het doelcluster:
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
Het broncluster is HDI 3.6 zonder versnelde schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen
Schoon de WAL FS-gegevens voor het doelcluster op en kopieer de WAL-map van het broncluster naar de HDFS van het doelcluster. Als u de map wilt kopiëren, voert u de volgende opdrachten uit in een Zookeeper-knooppunt of werkknooppunt in het doelcluster:
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
Het broncluster is HDI 4.0 zonder versnelde schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen
Schoon de WAL FS-gegevens voor het doelcluster op en kopieer de WAL-map van het broncluster naar de HDFS van het doelcluster. Kopieer de map door de volgende opdrachten uit te voeren in een Zookeeper-knooppunt of werkknooppunt in het doelcluster:
sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal
Het broncluster is HDI 4.0 zonder versnelde schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen
Schoon de WAL FS-gegevens voor het doelcluster op en kopieer de WAL-map van het broncluster naar de HDFS van het doelcluster. Als u de map wilt kopiëren, voert u de volgende opdrachten uit in een Zookeeper-knooppunt of werkknooppunt in het doelcluster:
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 /
Migratie voltooien
Kopieer met behulp van de
sudo -u hdfs
gebruikerscontext de map/hdp/apps/<new-version-name>
en de inhoud ervan van de<destination-container-fullpath>
naar de/hdp/apps
map onder<source-container-fullpath>
. U kunt de map kopiëren door de volgende opdrachten uit te voeren op het doelcluster:sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
Bijvoorbeeld:
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
Sla uw wijzigingen op het doelcluster op en start alle vereiste services opnieuw zoals Ambari aangeeft.
Verwijs uw toepassing naar het doelcluster.
Notitie
De statische DNS-naam voor uw toepassing wordt gewijzigd wanneer u een upgrade uitvoert. In plaats van deze DNS-naam vast te coderen, kunt u een CNAME configureren in de DNS-instellingen van uw domeinnaam die verwijst naar de naam van het cluster. Een andere optie is om een configuratiebestand voor uw toepassing te gebruiken dat u kunt bijwerken zonder opnieuw te implementeren.
Start de opname.
Controleer HBase-consistentie en eenvoudige DDL- (Data Definition Language) en DML-bewerkingen (Data Manipulation Language).
Als het doelcluster voldoende is, verwijdert u het broncluster.
HBase migreren met behulp van scripts
Voer het script uit migrate-hbase-source.sh op het broncluster en migrate-hbase-dest.sh op het doelcluster. Gebruik de volgende instructies om deze scripts uit te voeren.
Notitie
Met deze scripts worden de oude HBase-WAN's niet gekopieerd als onderdeel van de migratie; daarom mogen de scripts niet worden gebruikt op clusters waarvoor de functie HBase Backup of Replicatie is ingeschakeld.
Op broncluster
sudo bash migrate-hbase-source.sh
Op doelcluster
sudo bash migrate-hbase-dest.sh -f <src_default_Fs>
Verplicht argument voor de bovenstaande opdracht:
-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
Volgende stappen
Zie de volgende artikelen voor meer informatie over Apache HBase en het upgraden van HDInsight-clusters: