Dela via


Migrera ett Apache HBase-kluster till en ny version

I den här artikeln beskrivs hur du uppdaterar Apache HBase-klustret i Azure HDInsight till en nyare version.

Den här artikeln gäller endast om du använder samma Azure Storage-konto för dina käll- och målkluster. Information om hur du uppgraderar med ett nytt eller annat lagringskonto för målklustret finns i Migrera Apache HBase till en ny version med ett nytt Lagringskonto.

Stilleståndstiden vid uppgradering bör bara vara några minuter. Den här stilleståndstiden orsakas av stegen för att rensa alla minnesinterna data och tiden för att konfigurera och starta om tjänsterna i det nya klustret. Dina resultat varierar beroende på antalet noder, mängden data och andra variabler.

Granska Apache HBase-kompatibilitet

Innan du uppgraderar Apache HBase kontrollerar du att HBase-versionerna på käll- och målkluster är kompatibla. Granska HBase-versionskompatibilitetsmatrisen och viktig information i HBase-referensguiden för att kontrollera att programmet är kompatibelt med den nya versionen.

Här är ett exempel på en kompatibilitetsmatris. Y anger kompatibilitet och N anger en potentiell inkompatibilitet:

Kompatibilitetstyp Huvudversion Delversion Patch
Trådkompatibilitet för klientserver N Y Y
Server-Server-kompatibilitet N Y Y
Filformatskompatibilitet N Y Y
Klient-API-kompatibilitet N Y Y
Binär kompatibilitet för klient N N Y
Begränsad API-kompatibilitet på serversidan
Stabil N Y Y
Utvecklas N N Y
Instabil N N N
Beroendekompatibilitet N Y Y
Driftkompatibilitet N N Y

Mer information om HDInsight-versioner och kompatibilitet finns i Azure HDInsight-versioner.

Översikt över Apache HBase-klustermigrering

Utför följande grundläggande steg för att uppgradera ditt Apache HBase-kluster i Azure HDInsight. Detaljerade anvisningar finns i detaljerade steg och kommandon, eller använd skripten från avsnittet Migrera HBase med hjälp av skript för automatisk migrering.

Förbered källklustret:

  1. Stoppa datainmatning.
  2. Rensa memstore-data.
  3. Stoppa HBase från Ambari.
  4. För kluster med accelererade skrivningar säkerhetskopierar du katalogen Write Ahead Log (WAL).

Förbered målklustret:

  1. Skapa målklustret.
  2. Stoppa HBase från Ambari.
  3. Uppdatera fs.defaultFS i HDFS-tjänstkonfigurationer för att referera till den ursprungliga källklustercontainern.
  4. Uppdatera hbase.rootdir i HBase-tjänstkonfigurationerna för att referera till den ursprungliga källklustercontainern för kluster med accelererade skrivningar.
  5. Rensa Zookeeper-data.

Slutför migreringen:

  1. Rensa och migrera WAL.
  2. Kopiera appar från målklustrets standardcontainer till den ursprungliga källcontainern.
  3. Starta alla tjänster från Ambari-målklustret.
  4. Verifiera HBase.
  5. Ta bort källklustret.

Detaljerade migreringssteg och kommandon

Använd de här detaljerade stegen och kommandona för att migrera ditt Apache HBase-kluster.

Förbered källklustret

  1. Stoppa inmatning till HBase-källklustret.

  2. Rensa det HBase-källkluster som du uppgraderar.

    HBase skriver inkommande data till ett minnesinternt arkiv som kallas memstore. När memstore har nått en viss storlek skriver HBase den till disken för långtidslagring i klustrets lagringskonto. Om du tar bort källklustret efter en uppgradering tas även alla data i memstores bort. Om du vill behålla data, spola varje tabells memstore manuellt till disken innan du uppgraderar.

    Du kan rensa memstore-data genom att köra flush_all_tables.sh-skriptet från GitHub-lagringsplatsen Azure hbase-utils.

    Du kan också rensa memstore-data genom att köra följande HBase-kommando från HDInsight-klustret:

    hbase shell
    flush "<table-name>"
    
  3. Logga in på Apache Ambari i källklustret med https://<OLDCLUSTERNAME>.azurehdinsight.netoch stoppa HBase-tjänsterna.

  4. I bekräftelseprompten väljer du rutan för att aktivera underhållsläge för HBase.

    Mer information om hur du ansluter till och använder Ambari finns i Hantera HDInsight-kluster med Ambari-webbgränssnittet.

  5. Om ditt HBase-källkluster inte har funktionen Accelererade skrivningar hoppar du över det här steget. För HBase-källkluster med accelererade skrivningar säkerhetskopierar du WAL-katalogen under HDFS genom att köra följande kommandon från en SSH-session på någon av Zookeeper-noderna eller arbetsnoderna i källklustret.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

Förbereda målklustret

  1. I Azure Portal konfigurerar du ett nytt HDInsight-målkluster med samma lagringskonto som källklustret, men med ett annat containernamn:

  2. Logga in på Apache Ambari på det nya klustret vid https://<NEWCLUSTERNAME>.azurehdinsight.netoch stoppa HBase-tjänsterna.

  3. Under Services>HDFS>Configs>Advanced>Advanced core-site, ändra inställningen för HDFS så att den pekar på det ursprungliga klustrets containernamn. Inställningen i följande skärmbild bör till exempel ändras till wasbs://hbase-upgrade-old-2021-03-22.

    I Ambari väljer du Tjänster > HDFS > Configs > Advanced > Advanced core-site och ändrar containernamnet.

  4. Om ditt målkluster har funktionen Accelererade skrivningar, ändra hbase.rootdir-sökvägen så att den pekar mot det ursprungliga källklustrets containernamn. Följande sökväg bör till exempel ändras till hbase-upgrade-old-2021-03-22. Om klustret inte har accelererade skrivningar hoppar du över det här steget.

    I Ambari ändrar du containernamnet för HBase rootdir.

  5. Rensa Zookeeper-data i målklustret genom att köra följande kommandon i en Zookeeper-nod eller arbetsnod:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Rensa och migrera WAL

Kör följande kommandon, beroende på din HDI-källversion och om käll- och målkluster har accelererade skrivningar.

  • Målklustret är alltid HDI version 4.0, eftersom HDI 3.6 endast har Basic support och inte rekommenderas för nya kluster.
  • HDFS-kopieringskommandot är hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

Anmärkning

  • För lagringstypen <source-container-fullpath> WASB är wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • Lagringstypen <source-container-fullpath> för Azure Data Lake Storage Gen2 är abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net.

Källklustret är HDI 3.6 eller HDI 4.0 med accelererade skrivningar och målklustret har accelererade skrivningar

Rensa WAL FS-data för målklustret och kopiera WAL-katalogen från källklustret till målklustrets HDFS. Kopiera katalogen genom att köra följande kommandon i en Zookeeper-nod eller arbetsnod i målklustret:

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/

Källklustret är HDI 3.6 utan accelererade skrivningar och målklustret har accelererade skrivningar

Rensa WAL FS-data för målklustret och kopiera WAL-katalogen från källklustret till målklustrets HDFS. Kopiera katalogen genom att köra följande kommandon i en Zookeeper-nod eller arbetsnod i målklustret:

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

Källklustret är HDI 3.6 utan accelererade skrivningar och målklustret har inte accelererade skrivningar

Rensa WAL FS-data för målklustret och kopiera källklustrets WAL-katalog till målklustrets HDFS. Om du vill kopiera katalogen kör du följande kommandon i valfri Zookeeper-nod eller arbetsnod i målklustret:

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

Källklustret är HDI 4.0 utan accelererade skrivningar och målklustret har accelererade skrivningar

Rensa WAL FS-data för målklustret och kopiera WAL-katalogen från källklustret till målklustrets HDFS. Kopiera katalogen genom att köra följande kommandon i en Zookeeper-nod eller arbetsnod i målklustret:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal

Källklustret är HDI 4.0 utan accelererade skrivningar och målklustret har inte accelererade skrivningar

Rensa WAL FS-data för målklustret och kopiera källklustrets WAL-katalog till målklustrets HDFS. Om du vill kopiera katalogen kör du följande kommandon i valfri Zookeeper-nod eller arbetsnod i målklustret:

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 /

Slutföra migreringen

  1. Med hjälp av sudo -u hdfs användarkontexten kopierar du mappen /hdp/apps/<new-version-name> och dess innehåll från <destination-container-fullpath> till /hdp/apps mappen under <source-container-fullpath>. Du kan kopiera mappen genom att köra följande kommandon i målklustret:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
    

    Till exempel:

    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. Spara ändringarna i målklustret och starta om alla nödvändiga tjänster som Ambari anger.

  3. Peka ditt program till målklustret.

    Anmärkning

    Det statiska DNS-namnet för ditt program ändras när du uppgraderar. I stället för att hårdkoda det här DNS-namnet kan du konfigurera ett CNAME i domännamnets DNS-inställningar som pekar på klustrets namn. Ett annat alternativ är att använda en konfigurationsfil för ditt program som du kan uppdatera utan att distribuera om.

  4. Starta inmatningen.

  5. Kontrollera HBase-konsekvens och verifiera enkla Data Definition Language (DDL) och Data Manipulation Language (DML)-åtgärder.

  6. Om målklustret är tillfredsställande tar du bort källklustret.

Migrera HBase med hjälp av skript

  1. Kör skriptet migrate-hbase-source.sh på källklustret och migrate-hbase-dest.sh i målklustret. Använd följande instruktioner för att köra dessa skript.

    Anmärkning

    Dessa skript kopierar inte de gamla HBase-WAL:erna som en del av migreringen. Därför ska skripten inte användas på kluster som har antingen HBase Backup eller replikeringsfunktionen aktiverad.

  2. I källklustret

    sudo bash migrate-hbase-source.sh
    
  3. I målklustret

    sudo bash migrate-hbase-dest.sh  -f <src_default_Fs>
    

Obligatoriskt argument för kommandot ovan:

   -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

Nästa steg

Mer information om Apache HBase och uppgradering av HDInsight-kluster finns i följande artiklar: