Apache HBase migreren naar nieuwe versie en een nieuw opslagaccount
In dit artikel wordt beschreven hoe u uw Apache HBase-cluster op een Azure HDInsight naar een nieuwere versie met een ander Azure Storage-account.
Dit artikel is alleen van toepassing als u verschillende accounts Storage gebruiken voor uw bron- en doelclusters. Zie Migrate Apache HBase to a new version (Apache HBase migreren naar een nieuwe versie) als u versies wilt upgraden met hetzelfde Storage-account voor uw bron- en doelclusters.
De downtime tijdens het upgraden moet slechts enkele minuten zijn. Deze downtime wordt veroorzaakt door de stappen voor het leeg maken 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. De resultaten variëren, afhankelijk van het aantal knooppunten, de hoeveelheid gegevens en andere variabelen.
Compatibiliteit met Apache HBase controleren
Voordat u Apache HBase upgradet, moet u ervoor zorgen dat de HBase-versies op de bron- en doelclusters compatibel zijn. Bekijk de compatibiliteitsmatrix voor HBase-versies en opmerkingen bij de release in de HBase Reference Guide om ervoor te zorgen dat uw toepassing compatibel is met de nieuwe versie.
Hier is een voorbeeld van een compatibiliteitsmatrix. Y geeft compatibiliteit aan en N geeft een mogelijke incompatibiliteit aan:
Compatibiliteitstype | Primaire versie | Secundaire versie | Patch |
---|---|---|---|
Client-Server compatibiliteit met bedrading | N | J | J |
Server-Server compatibiliteit | N | J | J |
Compatibiliteit met bestandsindelingen | N | J | J |
Compatibiliteit met client-API | N | J | J |
Binaire compatibiliteit van client | N | N | J |
Beperkte API-compatibiliteit aan serverzijde | |||
Stabiel | N | J | J |
Evoluerende | N | N | J |
Unstable | N | N | N |
Compatibiliteit van afhankelijkheden | N | J | J |
Operationele compatibiliteit | N | N | J |
In de opmerkingen bij de release van de HBase-versie worden eventuele incompatibiliteiten beschreven. Test uw toepassing in een cluster met de doelversie van HDInsight en HBase.
Zie Voor meer informatie over HDInsight-versies en -compatibiliteit Azure HDInsight versies.
Overzicht van de migratie van Apache HBase-clusters
Als u uw Apache HBase-cluster op een Azure HDInsight wilt upgraden en migreren naar een nieuw opslagaccount, moet u de volgende basisstappen uitvoeren. Zie de gedetailleerde stappen en opdrachten voor gedetailleerde instructies.
Het broncluster voorbereiden:
- Gegevens opnemen stoppen.
- Memstore-gegevens leeg maken.
- Stop HBase vanuit Ambari.
- Voor clusters met versnelde schrijf schrijfgegevens, moet u een back-up maken van de map Write Ahead Log (WAL).
Het doelcluster voorbereiden:
- Maak het doelcluster.
- Stop HBase vanuit Ambari.
- Schoon Zookeeper-gegevens op.
- Schakel de gebruiker over naar HBase.
Voltooi de migratie:
- Schoon het doelbestandssysteem op, migreert de gegevens en verwijdert .
/hbase/hbase.id
- Schoon de WAL op en migreert deze.
- 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 met een nieuw opslagaccount.
Het broncluster voorbereiden
Stop de opname naar het HBase-broncluster.
Leeg het HBase-broncluster dat u wilt upgraden.
HBase schrijft inkomende gegevens naar een in-memory opslag met de naam memstore. Nadat de memstore een bepaalde grootte heeft bereikt, wordt deze door HBase leeggemaakt op 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 leeg maken naar schijf voordat u een upgrade gaat uitvoeren.
U kunt de memstore-gegevens leeg maken door het script flush_all_tables.sh uit te voeren vanuit de hbase-utils GitHub opslagplaats.
U kunt de memstore-gegevens ook leeg maken 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 niet de functie Versnelde schrijft, slaat u deze stap over. Voor HBase-bronclusters met versnelde schrijfopdrachten maakt u een back-up van de MAP WAL onder HDFS door de volgende opdrachten uit te voeren vanuit een SSH-sessie op een Zookeeper-knooppunt of werkknooppunt van een broncluster.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Het doelcluster voorbereiden
Stel in Azure Portal hdinsight-doelcluster in dat gebruikmaakt van een ander opslagaccount dan uw broncluster.
Meld u aan bij Apache Ambari op het nieuwe cluster op
https://<NEWCLUSTERNAME>.azurehdinsight.net
en stop de HBase-services.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
Schakel de gebruiker over naar HBase door uit te schakelen
sudo su hbase
.
Het bestandssysteem en WAL ops schonen en migreren
Voer de volgende opdrachten uit, afhankelijk van de HDI-bronversie en of de bron- en doelclusters versnelde schrijfopdrachten hebben. Het doelcluster is altijd HDI-versie 4.0, omdat HDI 3.6 zich in Basic Support en niet wordt aanbevolen voor nieuwe clusters.
- Het broncluster is HDI 3.6 met versnelde schrijf- en het doelcluster heeft versnelde schrijf.
- Het broncluster is HDI 3.6 zonder versnelde schrijf- en het doelcluster heeft versnelde schrijf schrijf.
- Het broncluster is HDI 3.6 zonder versnelde schrijf- en het doelcluster heeft geen versnelde schrijf schrijf.
- Het broncluster is HDI 4.0 met versnelde schrijf- en het doelcluster heeft versnelde schrijf.
- Het broncluster is HDI 4.0 zonder versnelde schrijf- en het doelcluster heeft versnelde schrijf schrijf.
- Het broncluster is HDI 4.0 zonder versnelde schrijf- en het doelcluster heeft geen versnelde schrijf schrijf schrijf.
De <container-endpoint-url>
voor het opslagaccount is https://<storageaccount>.blob.core.windows.net/<container-name>
. Geef het SAS-token voor het opslagaccount helemaal aan het einde van de URL door.
- Het
<container-fullpath>
voor opslagtype WASB iswasbs://<container-name>@<storageaccount>.blob.core.windows.net
- Het
<container-fullpath>
voor opslagtype Azure Data Lake Storage Gen2 isabfs://<container-name>@<storageaccount>.dfs.core.windows.net
.
Opdrachten kopiëren
De HDFS-opdracht voor kopiëren is hdfs dfs <copy properties starting with -D> -cp
Gebruik hadoop distcp
voor betere prestaties bij het kopiëren van bestanden die niet in een pagina-blob staan: hadoop distcp <copy properties starting with -D>
Als u de sleutel van het opslagaccount wilt doorgeven, gebruikt u:
-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
U kunt AzCopy ook gebruiken voor betere prestaties bij het kopiëren van HBase-gegevensbestanden.
Voer de AzCopy-opdracht uit:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
Als het doelopslagaccount Azure Blob-opslag is, moet u deze stap na de kopie uitvoeren. Als het doelopslagaccount Data Lake Storage Gen2 is, slaat u deze stap over.
Het Hadoop WASB-stuurprogramma maakt gebruik van speciale blobs van 0 grootten die overeenkomen met elke map. AzCopy slaat deze bestanden over bij het kopiëren. Sommige WASB-bewerkingen maken gebruik van deze blobs, dus u moet ze maken in het doelcluster. Voer de volgende Hadoop-opdracht uit vanaf een knooppunt in het doelcluster om de blobs te maken:
sudo -u hbase hadoop fs -chmod -R 0755 /hbase
U kunt AzCopy downloaden via Aan de slag met AzCopy. Zie azcopy copy voor meer informatie over het gebruik van AzCopy.
Het broncluster is HDI 3.6 of HDI 4.0 met versnelde schrijf schrijf- en het doelcluster heeft versnelde schrijf-
Voer de volgende opdrachten uit om het bestandssysteem op te schonen en gegevens te migreren:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Verwijderen door
hbase.id
uit tehdfs dfs -rm /hbase/hbase.id
Voer de volgende opdrachten uit om de WAL op te schonen en te migreren:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
Het broncluster is HDI 3.6 zonder versnelde schrijf schrijf- en het doelcluster heeft versnelde schrijf-
Voer de volgende opdrachten uit om het bestandssysteem op te schonen en gegevens te migreren:
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
Verwijderen door
hbase.id
uit tehdfs dfs -rm /hbase/hbase.id
Voer de volgende opdrachten uit om de WAL op te schonen en te migreren:
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
Het broncluster is HDI 3.6 zonder versnelde schrijf schrijf- en het doelcluster heeft geen versnelde schrijf schrijf-
Voer de volgende opdrachten uit om het bestandssysteem op te schonen en gegevens te migreren:
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
Verwijderen door
hbase.id
uit tehdfs dfs -rm /hbase/hbase.id
Voer de volgende opdrachten uit om de WAL op te schonen en te migreren:
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
Het broncluster is HDI 4.0 zonder versnelde schrijf schrijf- en het doelcluster heeft versnelde schrijf-
Voer de volgende opdrachten uit om het bestandssysteem op te schonen en gegevens te migreren:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Verwijderen door
hbase.id
uit tehdfs dfs -rm /hbase/hbase.id
Voer de volgende opdrachten uit om de WAL op te schonen en te migreren:
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
Het broncluster is HDI 4.0 zonder versnelde schrijf- en het doelcluster heeft geen versnelde schrijf schrijf-
Voer de volgende opdrachten uit om het bestandssysteem op te schonen en gegevens te migreren:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Verwijderen door
hbase.id
uit tehdfs dfs -rm /hbase/hbase.id
Voer de volgende opdrachten uit om de WAL op te schonen en te migreren:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
Migratie voltooien
Sla uw wijzigingen op het doelcluster op en start alle vereiste services opnieuw op, zoals aangegeven door Ambari.
Wijs uw toepassing naar het doelcluster.
Notitie
De statische DNS-naam voor uw toepassing wordt gewijzigd tijdens de upgrade. In plaats van deze DNS-naam hard te coderen, kunt u een CNAME configureren in de DNS-instellingen van uw domeinnaam die naar de naam van het cluster wijst. Een andere optie is het gebruik van een configuratiebestand voor uw toepassing dat u kunt bijwerken zonder opnieuw te worden geployed.
Start de opname.
Controleer de HBase-consistentie en eenvoudige DDL-bewerkingen (Data Definition Language) en DML-bewerkingen (Data Manipulation Language).
Als het doelcluster voldoende is, verwijdert u het broncluster.
Volgende stappen
Zie de volgende artikelen voor meer informatie over Apache HBase en het upgraden van HDInsight-clusters: