Apache HBase migreren naar nieuwe versie en een nieuw opslagaccount
In dit artikel wordt beschreven hoe u uw Apache HBase-cluster in Azure HDInsight bijwerkt naar een nieuwere versie met een ander Azure Storage-account.
Dit artikel is alleen van toepassing als u verschillende opslagaccounts voor uw bron- en doelclusters moet gebruiken. Zie Apache HBase migreren naar een nieuwe versie als u versies wilt upgraden met hetzelfde opslagaccount voor uw bron- en doelclusters.
De downtime tijdens het upgraden mag slechts enkele minuten duren. Deze downtime wordt veroorzaakt door de stappen voor het leegmaken van alle in-memory gegevens en de tijd voor het configureren en opnieuw starten van de services op het nieuwe cluster. 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 geeft een mogelijke incompatibiliteit aan:
Compatibiliteitstype | Primaire versie | Secundaire versie | Patch |
---|---|---|---|
Compatibiliteit met bedrading van client-server | N | J | J |
Servercompatibiliteit | N | J | J |
Compatibiliteit met bestandsindelingen | N | J | J |
Compatibiliteit met client-API's | N | J | J |
Binaire clientcompatibiliteit | N | N | J |
Beperkte API-compatibiliteit aan de serverzijde | |||
Stabiel | N | J | J |
Evoluerende | N | N | J |
Unstable | N | N | N |
Compatibiliteit met afhankelijkheden | N | J | J |
Operationele compatibiliteit | N | N | J |
De releaseopmerkingen van de HBase-versie moeten eventuele niet-compatibele fouten beschrijven. Test uw toepassing in een cluster met de doelversie van HDInsight en HBase.
Zie Azure HDInsight-versies voor meer informatie over HDInsight-versies en -compatibiliteit.
Overzicht van migratie van Apache HBase-clusters
Als u uw Apache HBase-cluster in Azure HDInsight wilt upgraden en migreren naar een nieuw opslagaccount, voert u de volgende basisstappen uit. Zie de gedetailleerde stappen en opdrachten voor gedetailleerde instructies.
Het broncluster voorbereiden:
- Stop de gegevensopname.
- Gegevens leegmaken
memstore
. - Stop HBase vanuit Ambari.
- Voor clusters met versnelde schrijfbewerkingen maakt u een back-up van de wal-map (Write Ahead Log).
Het doelcluster voorbereiden:
- Maak het doelcluster.
- Stop HBase vanuit Ambari.
- Clean Zookeeper-gegevens.
- Overschakelen naar HBase.
Voltooi de migratie:
- Schoon het doelbestandssysteem op, migreer de gegevens en verwijder
/hbase/hbase.id
deze. - Schoon en migreer de WAL.
- 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 bron-HBase-cluster.
Leeg het HBase-broncluster dat u wilt upgraden.
HBase schrijft binnenkomende gegevens naar een in-memory archief met de naam a
memstore
. Nadat de grootte is bereikt, wordt dezememstore
door HBase naar de schijf gespoeld voor langetermijnopslag in het opslagaccount van het cluster. Als u het broncluster verwijdert na een upgrade, worden ook alle gegevens in hetmemstores
cluster verwijderd. Als u de gegevens wilt behouden, moet u de tabel handmatig naar dememstore
schijf leegmaken 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 hbase-utils.U kunt de
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 vakje 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 bron-HBase-cluster niet beschikt over de functie Versnelde schrijfbewerkingen , kunt u deze stap overslaan. 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 Zookeeper-bronclusterknooppunt of werkknooppunt.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Het doelcluster voorbereiden
Stel in Azure Portal een nieuw 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 voeren
sudo su hbase
.
Het bestandssysteem en 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 in basic-ondersteuning is en niet wordt aanbevolen voor nieuwe clusters.
- 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 <container-endpoint-url>
voor het opslagaccount is https://<storageaccount>.blob.core.windows.net/<container-name>
. Geef het SAS-token door voor het opslagaccount aan het einde van de URL.
- 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 OPDRACHT VOOR HET kopiëren van HDFS is hdfs dfs <copy properties starting with -D> -cp
Gebruik hadoop distcp
deze functie voor betere prestaties bij het kopiëren van bestanden die zich niet in een pagina-blob bevinden: 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 Storage is, voert u deze stap uit na de kopie. Als het doelopslagaccount Data Lake Storage Gen2 is, kunt u deze stap overslaan.
Het Hadoop WASB-stuurprogramma maakt gebruik van speciale blobs van 0 grootte die overeenkomen met elke map. AzCopy slaat deze bestanden over wanneer u de kopie uitvoert. Sommige WASB-bewerkingen gebruiken deze blobs, dus u moet ze maken in het doelcluster. Als u de blobs wilt maken, voert u de volgende Hadoop-opdracht uit vanaf elk knooppunt in het doelcluster:
sudo -u hbase hadoop fs -chmod -R 0755 /hbase
U kunt AzCopy downloaden van 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 schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen
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
hbase.id
door uit te voerenhdfs 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 schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen
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
hbase.id
door uit te voerenhdfs 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 schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen
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
hbase.id
door uit te voerenhdfs 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 schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen
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
hbase.id
door uit te voerenhdfs 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 schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen
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
hbase.id
door uit te voerenhdfs 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 in het doelcluster 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 wanneer u een upgrade uitvoert. 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 verwijst. Een andere optie is om een configuratiebestand te gebruiken voor uw toepassing die u kunt bijwerken zonder opnieuw te implementeren.
Start de opname.
Controleer de consistentie van HBase en eenvoudige DDL-bewerkingen (Data Definition Language) en Data Manipulation Language (DML).
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: