Migrera ett Apache HBase-kluster till en ny version

Den här artikeln beskriver hur du uppdaterar ditt Apache HBase-kluster 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. Resultatet 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 Högre version Delversion Patch
Client-Server trådkompatibilitet N Y Y
Server-Server kompatibilitet N Y Y
Filformatskompatibilitet N Y Y
Klient-API-kompatibilitet N Y Y
Binär klientkompatibilitet N N Y
Begränsad API-kompatibilitet på serversidan
Stable N Y Y
Utvecklas N N Y
Instabila 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 migrering av Apache HBase-kluster

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. För kluster med accelererade skrivningar uppdaterar hbase.rootdir du i HBase-tjänstkonfigurationer för att referera till den ursprungliga källklustercontainern.
  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örbereda källklustret

  1. Stoppa inmatningen till HBase-källklustret.

  2. Töm HBase-källklustret som du uppgraderar.

    HBase skriver inkommande data till ett minnesinternt arkiv som kallas memstore. När memstore når en viss storlek rensar HBase den till disken för långsiktig lagring 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 rensar du varje tabells memstore manuellt till disken innan du uppgraderar.

    Du kan rensa memstore-data genom att köra skriptet flush_all_tables.sh 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 på källklustret med https://<OLDCLUSTERNAME>.azurehdinsight.netoch stoppa HBase-tjänsterna.

  4. I bekräftelsemeddelandet 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 hjälp av 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 på https://<NEWCLUSTERNAME>.azurehdinsight.netoch stoppa HBase-tjänsterna.

  3. Under Services>HDFS>ConfigsAdvanced>Advanced core-site ändrar du fs.defaultFS HDFS-inställningen så att den pekar på det ursprungliga källklustrets > 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 Services > HDFS > Configs > Advanced > Advanced core-site och ändrar containernamnet.

  4. Om målklustret har funktionen Accelererade skrivningar ändrar du sökvägen så att den hbase.rootdir pekar på det ursprungliga namnet på källklustrets container. 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 på 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 har grundläggande stöd och inte rekommenderas för nya kluster.
  • HDFS-kopieringskommandot är hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

Anteckning

  • För lagringstypen <source-container-fullpath> WASB är wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • <source-container-fullpath> För lagringstypen 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. Kopiera katalogen genom att köra 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. Kopiera katalogen genom att köra 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
    

    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.

    Anteckning

    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 enkla DDL-åtgärder (Data Definition Language) och DML-åtgärder (Data Manipulation Language).

  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 i källklustret och migrate-hbase-dest.sh i målklustret. Använd följande instruktioner för att köra dessa skript.

    Anteckning

    Dessa skript kopierar inte HBase gamla WALs som en del av migreringen. Därför ska skripten inte användas i 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: