Migrera Apache HBase till en ny version och ett lagringskonto

I den här artikeln beskrivs hur du uppdaterar ditt Apache HBase-kluster i Azure HDInsight till en nyare version med ett annat Azure Storage-konto.

Den här artikeln gäller endast om du behöver använda olika lagringskonton för dina käll- och målkluster. Information om hur du uppgraderar versioner med samma lagringskonto för dina käll- och målkluster finns i Migrera Apache HBase till en ny version.

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 Högre version 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
Stable N Y Y
Utvecklas N N Y
Instabila N N N
Beroendekompatibilitet N Y Y
Driftkompatibilitet N N Y

Viktig information om HBase-versionen bör beskriva eventuella icke-bakåtkompatibla funktioner. Testa ditt program i ett kluster som kör målversionen av HDInsight och HBase.

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

Översikt över Apache HBase-klustermigrering

Om du vill uppgradera och migrera ditt Apache HBase-kluster i Azure HDInsight till ett nytt lagringskonto slutför du följande grundläggande steg. Detaljerade instruktioner finns i de detaljerade stegen och kommandona.

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. Rensa Zookeeper-data.
  4. Växla användare till HBase.

Slutför migreringen:

  1. Rensa målfilsystemet, migrera data och ta bort /hbase/hbase.id.
  2. Rensa och migrera WAL.
  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 med ett nytt lagringskonto.

Förbereda 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 med namnet .memstore När den memstore har nått 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. Om du vill behålla data rensar du varje tabell memstore till disken manuellt innan du uppgraderar.

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

    Du kan också rensa memstore data genom att köra följande HBase-kommando inifrå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å valfri Zookeeper-nod för källkluster eller arbetsnod.

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

Förbereda målklustret

  1. I Azure-portalen konfigurerar du ett nytt HDInsight-målkluster som använder ett annat lagringskonto än ditt källkluster.

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

  3. 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
    
  4. Växla användaren till HBase genom att köra sudo su hbase.

Rensa och migrera filsystemet och 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 stöd för Basic och inte rekommenderas för nya kluster.

<container-endpoint-url> För lagringskontot är https://<storageaccount>.blob.core.windows.net/<container-name>. Skicka SAS-token för lagringskontot i slutet av URL:en.

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

Kopiera kommandon

HDFS-kopieringskommandot är hdfs dfs <copy properties starting with -D> -cp

Använd hadoop distcp för bättre prestanda vid kopiering av filer som inte finns i en sidblob: hadoop distcp <copy properties starting with -D>

Om du vill skicka nyckeln för lagringskontot använder du:

  • -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

Du kan också använda AzCopy för bättre prestanda när du kopierar HBase-datafiler.

  1. Kör AzCopy-kommandot:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. Om mållagringskontot är Azure Blob Storage gör du det här steget efter kopian. Om mållagringskontot är Data Lake Storage Gen2 hoppar du över det här steget.

    Hadoop WASB-drivrutinen använder särskilda blobar i 0-storlekar som motsvarar varje katalog. AzCopy hoppar över dessa filer när du gör kopian. Vissa WASB-åtgärder använder dessa blobar, så du måste skapa dem i målklustret. Skapa blobarna genom att köra följande Hadoop-kommando från valfri nod i målklustret:

    sudo -u hbase hadoop fs -chmod -R 0755 /hbase
    

Du kan ladda ned AzCopy från Kom igång med AzCopy. Mer information om hur du använder AzCopy finns i azcopy copy.

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

  1. Kör följande kommandon för att rensa filsystemet och migrera data:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Ta bort hbase.id genom att köra hdfs dfs -rm /hbase/hbase.id

  3. Kör följande kommandon för att rensa och migrera WAL:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
    

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

  1. Kör följande kommandon för att rensa filsystemet och migrera data:

    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. Ta bort hbase.id genom att köra hdfs dfs -rm /hbase/hbase.id

  3. Kör följande kommandon för att rensa och migrera WAL:

    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
    

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

  1. Kör följande kommandon för att rensa filsystemet och migrera data:

    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. Ta bort hbase.id genom att köra hdfs dfs -rm /hbase/hbase.id

  3. Kör följande kommandon för att rensa och migrera WAL:

    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
    

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

  1. Kör följande kommandon för att rensa filsystemet och migrera data:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Ta bort hbase.id genom att köra hdfs dfs -rm /hbase/hbase.id

  3. Kör följande kommandon för att rensa och migrera WAL:

    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
    

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

  1. Kör följande kommandon för att rensa filsystemet och migrera data:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Ta bort hbase.id genom att köra hdfs dfs -rm /hbase/hbase.id

  3. Kör följande kommandon för att rensa och migrera WAL:

    hdfs dfs -rm -r /hbase-wals/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
    

Slutföra migreringen

  1. Spara ändringarna i målklustret och starta om alla nödvändiga tjänster enligt Ambari.

  2. Peka ditt program till målklustret.

    Kommentar

    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.

  3. Starta inmatningen.

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

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

Nästa steg

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