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:

  1. Gegevens opnemen stoppen.
  2. Memstore-gegevens leeg maken.
  3. Stop HBase vanuit Ambari.
  4. Voor clusters met versnelde schrijf schrijfgegevens, moet u een back-up maken van de map Write Ahead Log (WAL).

Het doelcluster voorbereiden:

  1. Maak het doelcluster.
  2. Stop HBase vanuit Ambari.
  3. Schoon Zookeeper-gegevens op.
  4. Schakel de gebruiker over naar HBase.

Voltooi de migratie:

  1. Schoon het doelbestandssysteem op, migreert de gegevens en verwijdert ./hbase/hbase.id
  2. Schoon de WAL op en migreert deze.
  3. Start alle services vanuit het Ambari-doelcluster.
  4. Controleer HBase.
  5. 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

  1. Stop de opname naar het HBase-broncluster.

  2. 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>"
    
  3. Meld u aan bij Apache Ambari op het broncluster met https://<OLDCLUSTERNAME>.azurehdinsight.neten stop de HBase-services.

  4. 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.

  5. 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

  1. Stel in Azure Portal hdinsight-doelcluster in dat gebruikmaakt van een ander opslagaccount dan uw broncluster.

  2. Meld u aan bij Apache Ambari op het nieuwe cluster op https://<NEWCLUSTERNAME>.azurehdinsight.neten stop de HBase-services.

  3. 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
    
  4. 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.

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 is wasbs://<container-name>@<storageaccount>.blob.core.windows.net
  • Het <container-fullpath> voor opslagtype Azure Data Lake Storage Gen2 is abfs://<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.

  1. Voer de AzCopy-opdracht uit:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. 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-

  1. 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 /
    
  2. Verwijderen door hbase.id uit te hdfs dfs -rm /hbase/hbase.id

  3. 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-

  1. 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
    
  2. Verwijderen door hbase.id uit te hdfs dfs -rm /hbase/hbase.id

  3. 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-

  1. 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
    
  2. Verwijderen door hbase.id uit te hdfs dfs -rm /hbase/hbase.id

  3. 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-

  1. 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 /
    
  2. Verwijderen door hbase.id uit te hdfs dfs -rm /hbase/hbase.id

  3. 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-

  1. 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 /
    
  2. Verwijderen door hbase.id uit te hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. Sla uw wijzigingen op het doelcluster op en start alle vereiste services opnieuw op, zoals aangegeven door Ambari.

  2. 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.

  3. Start de opname.

  4. Controleer de HBase-consistentie en eenvoudige DDL-bewerkingen (Data Definition Language) en DML-bewerkingen (Data Manipulation Language).

  5. 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: