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:

  1. Stop de gegevensopname.
  2. Gegevens leegmaken memstore .
  3. Stop HBase vanuit Ambari.
  4. Voor clusters met versnelde schrijfbewerkingen maakt u een back-up van de wal-map (Write Ahead Log).

Het doelcluster voorbereiden:

  1. Maak het doelcluster.
  2. Stop HBase vanuit Ambari.
  3. Clean Zookeeper-gegevens.
  4. Overschakelen naar HBase.

Voltooi de migratie:

  1. Schoon het doelbestandssysteem op, migreer de gegevens en verwijder /hbase/hbase.iddeze.
  2. Schoon en migreer de WAL.
  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 bron-HBase-cluster.

  2. 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 deze memstore 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 het memstorescluster verwijderd. Als u de gegevens wilt behouden, moet u de tabel handmatig naar de memstore 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>"
    
  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 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.

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

  1. Stel in Azure Portal een nieuw 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 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 <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 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 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.

  1. Voer de AzCopy-opdracht uit:

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

  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 hbase.id door uit te voeren 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 schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen

  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 hbase.id door uit te voeren 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 schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen

  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 hbase.id door uit te voeren 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 schrijfbewerkingen en het doelcluster heeft versnelde schrijfbewerkingen

  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 hbase.id door uit te voeren 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 schrijfbewerkingen en het doelcluster heeft geen versnelde schrijfbewerkingen

  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 hbase.id door uit te voeren 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 in het doelcluster 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 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.

  3. Start de opname.

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

  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: