Delen via


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:

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

Bereid het doelcluster voor:

  1. Maak het doelcluster.
  2. Stop HBase vanuit Ambari.
  3. Werk fs.defaultFS bij in HDFS-serviceconfiguraties om te verwijzen naar de oorspronkelijke bronclustercontainer.
  4. Voor clusters met versnelde schrijfbewerkingen werkt hbase.rootdir u bij in HBase-serviceconfiguraties om te verwijzen naar de oorspronkelijke bronclustercontainer.
  5. Zookeeper-gegevens opschonen.

Voltooi de migratie:

  1. Schoon de WAL op en migreer deze.
  2. Kopieer apps van de standaardcontainer van het doelcluster naar de oorspronkelijke broncontainer.
  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.

Het broncluster voorbereiden

  1. Stop de opname naar het HBase-broncluster.

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

  1. Stel in de Azure Portal een nieuw HDInsight-doelcluster in met hetzelfde opslagaccount als het broncluster, maar met een andere containernaam:

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

  3. 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 in wasbs://hbase-upgrade-old-2021-03-22.

    Selecteer in Ambari Services > HDFS > Configs > Advanced > Core-site en wijzig de containernaam.

  4. 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 in hbase-upgrade-old-2021-03-22. Als uw cluster geen versnelde schrijfbewerkingen heeft, slaat u deze stap over.

    Wijzig in Ambari de containernaam voor de HBase rootdir.

  5. 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 is wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • De <source-container-fullpath> Azure Data Lake Storage Gen2 voor het opslagtype is abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net.

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

  1. 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
    
  2. Sla uw wijzigingen op het doelcluster op en start alle vereiste services opnieuw zoals Ambari aangeeft.

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

  4. Start de opname.

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

  6. Als het doelcluster voldoende is, verwijdert u het broncluster.

HBase migreren met behulp van scripts

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

  2. Op broncluster

    sudo bash migrate-hbase-source.sh
    
  3. 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: