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:
- Stoppa datainmatning.
- Rensa memstore-data.
- Stoppa HBase från Ambari.
- För kluster med accelererade skrivningar säkerhetskopierar du katalogen Write Ahead Log (WAL).
Förbered målklustret:
- Skapa målklustret.
- Stoppa HBase från Ambari.
- Uppdatera
fs.defaultFS
i HDFS-tjänstkonfigurationer för att referera till den ursprungliga källklustercontainern. - För kluster med accelererade skrivningar uppdaterar
hbase.rootdir
du i HBase-tjänstkonfigurationer för att referera till den ursprungliga källklustercontainern. - Rensa Zookeeper-data.
Slutför migreringen:
- Rensa och migrera WAL.
- Kopiera appar från målklustrets standardcontainer till den ursprungliga källcontainern.
- Starta alla tjänster från Ambari-målklustret.
- Verifiera HBase.
- 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
Stoppa inmatningen till HBase-källklustret.
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>"
Logga in på Apache Ambari på källklustret med
https://<OLDCLUSTERNAME>.azurehdinsight.net
och stoppa HBase-tjänsterna.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.
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
I Azure Portal konfigurerar du ett nytt HDInsight-målkluster med samma lagringskonto som källklustret, men med ett annat containernamn:
Logga in på Apache Ambari på det nya klustret på
https://<NEWCLUSTERNAME>.azurehdinsight.net
och stoppa HBase-tjänsterna.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 tillwasbs://hbase-upgrade-old-2021-03-22
.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 tillhbase-upgrade-old-2021-03-22
. Om klustret inte har accelererade skrivningar hoppar du över det här steget.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 ärwasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net
. -
<source-container-fullpath>
För lagringstypen Azure Data Lake Storage Gen2 ärabfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net
.
- Källklustret är HDI 3.6 med accelererade skrivningar och målklustret har accelererade skrivningar.
- Källklustret är HDI 3.6 utan accelererade skrivningar och målklustret har accelererade skrivningar.
- Källklustret är HDI 3.6 utan accelererade skrivningar och målklustret har inte accelererade skrivningar.
- Källklustret är HDI 4.0 med accelererade skrivningar och målklustret har accelererade skrivningar.
- Källklustret är HDI 4.0 utan accelererade skrivningar och målklustret har accelererade skrivningar.
- Källklustret är HDI 4.0 utan accelererade skrivningar och målklustret har inte accelererade skrivningar.
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
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
Spara ändringarna i målklustret och starta om alla nödvändiga tjänster som Ambari anger.
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.
Starta inmatningen.
Kontrollera HBase-konsekvens och enkla DDL-åtgärder (Data Definition Language) och DML-åtgärder (Data Manipulation Language).
Om målklustret är tillfredsställande tar du bort källklustret.
Migrera HBase med hjälp av skript
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.
I källklustret
sudo bash migrate-hbase-source.sh
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: