Eseguire la migrazione di cluster Apache HBase a una nuova versione
Questo articolo illustra come aggiornare il cluster Apache HBase in Azure HDInsight a una versione più recente.
Questo articolo si applica solo se si usa lo stesso account di Archiviazione di Azure per i cluster di origine e di destinazione. Per eseguire l'aggiornamento con un account di archiviazione nuovo o diverso per il cluster di destinazione, vedere Eseguire la migrazione di Apache HBase a una nuova versione con un nuovo account di archiviazione.
Il tempo di inattività durante l'aggiornamento deve essere di pochi minuti. Questo tempo di inattività è causato dai passaggi per scaricare tutti i dati in memoria e il tempo per configurare e riavviare i servizi nel nuovo cluster. I risultati variano a seconda del numero di nodi, della quantità di dati e di altre variabili.
Esaminare la compatibilità di Apache HBase
Prima di aggiornare Apache HBase, verificare che le versioni di HBase nel cluster di origine e in quello di destinazione siano compatibili. Esaminare la matrice di compatibilità della versione HBase e le note sulla versione nella Guida di riferimento HBase per assicurarsi che l'applicazione sia compatibile con la nuova versione.
Ecco una matrice di compatibilità di esempio. Y indica la compatibilità e N indica una potenziale incompatibilità:
Tipo di compatibilità | Versione principale | Versione secondaria | Patch |
---|---|---|---|
Compatibilità di rete client-server | N | S | S |
Compatibilità server-server | N | S | S |
Compatibilità tra formati di file | N | S | S |
Compatibilità API client | N | S | S |
Compatibilità binaria client | N | N | S |
Compatibilità API limitata sul lato server | |||
Stable | N | S | S |
In evoluzione | N | N | S |
Instabile | N | N | N |
Compatibilità tra dipendenze | N | S | S |
Compatibilità operativa | N | N | S |
Per altre informazioni sulle versioni e sulla compatibilità di HDInsight, vedere Versioni di Azure HDInsight.
Panoramica della migrazione del cluster Apache HBase
Per aggiornare il cluster Apache HBase in Azure HDInsight, completare i passaggi di base seguenti. Per istruzioni dettagliate, vedere i passaggi e i comandi dettagliati oppure usare gli script della sezione Migrate HBase usando script per la migrazione automatica.
Preparare il cluster di origine:
- Arrestare l'inserimento dei dati.
- Scaricare i dati del memstore.
- Arrestare HBase da Ambari.
- Per i cluster con scritture accelerate, eseguire il backup della directory Write Ahead Log (WAL).
Preparare il cluster di destinazione:
- Creare il cluster di destinazione.
- Arrestare HBase da Ambari.
- Aggiornare
fs.defaultFS
le configurazioni del servizio HDFS per fare riferimento al contenitore del cluster di origine originale. - Per i cluster con scritture accelerate, aggiornare
hbase.rootdir
nelle configurazioni del servizio HBase per fare riferimento al contenitore del cluster di origine originale. - Pulire i dati di Zookeeper.
Completare la migrazione:
- Pulire e eseguire la migrazione di WAL.
- Copiare le app dal contenitore predefinito del cluster di destinazione nel contenitore di origine originale.
- Avviare tutti i servizi dal cluster di destinazione Ambari.
- Verificare HBase.
- Eliminare il cluster di origine.
Passaggi e comandi di migrazione dettagliati
Usare questi passaggi e comandi dettagliati per eseguire la migrazione del cluster Apache HBase.
Preparare il cluster di origine
Arrestare l'inserimento nel cluster HBase di origine.
Scaricare il cluster HBase di origine che si sta aggiornando.
HBase scrive i dati in ingresso in un archivio in memoria denominato memstore. Dopo che il memstore raggiunge una determinata dimensione, HBase lo scarica su disco per l'archiviazione a lungo termine nell'account di archiviazione del cluster. L'eliminazione del cluster di origine dopo un aggiornamento elimina anche tutti i dati negli archivi mem. Per conservare i dati, scaricare manualmente l'archivio memstore di ogni tabella su disco prima dell'aggiornamento.
È possibile scaricare i dati del memstore eseguendo lo script flush_all_tables.sh dal repository GitHub di Azure hbase-utils.
È anche possibile scaricare i dati memstore eseguendo il comando della shell HBase seguente dal cluster HDInsight:
hbase shell flush "<table-name>"
Accedere a Apache Ambari nel cluster di origine con
https://<OLDCLUSTERNAME>.azurehdinsight.net
e arrestare i servizi HBase.Al prompt di conferma selezionare la casella per attivare la modalità di manutenzione per HBase.
Per altre informazioni sulla connessione ad Ambari e sul suo uso, vedere Gestire i cluster HDInsight con l'interfaccia utente Web Ambari.
Se il cluster HBase di origine non dispone della funzionalità Scritture accelerate , ignorare questo passaggio. Per i cluster HBase di origine con scritture accelerate, eseguire il backup della directory WAL in HDFS eseguendo i comandi seguenti da una sessione SSH in uno dei nodi zookeeper o dei nodi di lavoro del cluster di origine.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Preparare il cluster di destinazione
Nella portale di Azure configurare un nuovo cluster HDInsight di destinazione usando lo stesso account di archiviazione del cluster di origine, ma con un nome contenitore diverso:
Accedere a Apache Ambari nel nuovo cluster in
https://<NEWCLUSTERNAME>.azurehdinsight.net
e arrestare i servizi HBase.In Services> HDFSConfigs>Advanced>Core-site modificare l'impostazione
fs.defaultFS
HDFS> in modo che punti al nome del contenitore del cluster di origine originale. Ad esempio, l'impostazione nella schermata seguente deve essere modificata inwasbs://hbase-upgrade-old-2021-03-22
.Se il cluster di destinazione ha la funzionalità Scritture accelerate, modificare il
hbase.rootdir
percorso per puntare al nome del contenitore del cluster di origine originale. Ad esempio, il percorso seguente deve essere modificato inhbase-upgrade-old-2021-03-22
. Se il cluster non dispone di scritture accelerate, ignorare questo passaggio.Pulire i dati zookeeper nel cluster di destinazione eseguendo i comandi seguenti in qualsiasi nodo zookeeper o nodo di lavoro:
hbase zkcli rmr /hbase-unsecure quit
Pulire e eseguire la migrazione di WAL
Eseguire i comandi seguenti, a seconda della versione HDI di origine e se i cluster di origine e di destinazione hanno scritture accelerate.
- Il cluster di destinazione è sempre HDI versione 4.0, poiché HDI 3.6 è in supporto di base e non è consigliato per i nuovi cluster.
- Il comando di copia HDFS è
hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution
.
Nota
- Per il
<source-container-fullpath>
tipo di archiviazione WASB èwasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net
. - Per il
<source-container-fullpath>
tipo di archiviazione Azure Data Lake Storage Gen2 èabfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net
.
- Il cluster di origine è HDI 3.6 con scritture accelerate e il cluster di destinazione ha scritture accelerate.
- Il cluster di origine è HDI 3.6 senza scritture accelerate e il cluster di destinazione ha scritture accelerate.
- Il cluster di origine è HDI 3.6 senza scritture accelerate e il cluster di destinazione non dispone di scritture accelerate.
- Il cluster di origine è HDI 4.0 con scritture accelerate e il cluster di destinazione ha scritture accelerate.
- Il cluster di origine è HDI 4.0 senza scritture accelerate e il cluster di destinazione ha scritture accelerate.
- Il cluster di origine è HDI 4.0 senza scritture accelerate e il cluster di destinazione non dispone di scritture accelerate.
Il cluster di origine è HDI 3.6 o HDI 4.0 con scritture accelerate e il cluster di destinazione ha scritture accelerate
Pulire i dati WAL FS per il cluster di destinazione e copiare la directory WAL dal cluster di origine nell'HDFS del cluster di destinazione. Copiare la directory eseguendo i comandi seguenti in qualsiasi nodo Zookeeper o nodo di lavoro nel cluster di destinazione:
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/
Il cluster di origine è HDI 3.6 senza scritture accelerate e il cluster di destinazione ha scritture accelerate
Pulire i dati WAL FS per il cluster di destinazione e copiare la directory WAL dal cluster di origine nell'HDFS del cluster di destinazione. Copiare la directory eseguendo i comandi seguenti in qualsiasi nodo Zookeeper o nodo di lavoro nel cluster di destinazione:
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
Il cluster di origine è HDI 3.6 senza scritture accelerate e il cluster di destinazione non dispone di scritture accelerate
Pulire i dati WAL FS per il cluster di destinazione e copiare la directory WAL del cluster di origine in HDFS del cluster di destinazione. Per copiare la directory, eseguire i comandi seguenti in qualsiasi nodo Zookeeper o nodo di lavoro nel cluster di destinazione:
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
Il cluster di origine è HDI 4.0 senza scritture accelerate e il cluster di destinazione ha scritture accelerate
Pulire i dati WAL FS per il cluster di destinazione e copiare la directory WAL dal cluster di origine nell'HDFS del cluster di destinazione. Copiare la directory eseguendo i comandi seguenti in qualsiasi nodo Zookeeper o nodo di lavoro nel cluster di destinazione:
sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal
Il cluster di origine è HDI 4.0 senza scritture accelerate e il cluster di destinazione non dispone di scritture accelerate
Pulire i dati WAL FS per il cluster di destinazione e copiare la directory WAL del cluster di origine in HDFS del cluster di destinazione. Per copiare la directory, eseguire i comandi seguenti in qualsiasi nodo Zookeeper o nodo di lavoro nel cluster di destinazione:
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 /
Completare la migrazione
Usando il
sudo -u hdfs
contesto utente, copiare la cartella/hdp/apps/<new-version-name>
e il relativo contenuto dalla<destination-container-fullpath>
cartella alla/hdp/apps
cartella in<source-container-fullpath>
. È possibile copiare la cartella eseguendo i comandi seguenti nel cluster di destinazione:sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
Ad esempio:
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
Nel cluster di destinazione salvare le modifiche e riavviare tutti i servizi necessari come Ambari.
Puntare l'applicazione al cluster di destinazione.
Nota
Il nome DNS statico per l'applicazione cambia quando si esegue l'aggiornamento. Anziché codificare il nome DNS, è possibile configurare un CNAME nelle impostazioni DNS del nome di dominio che puntano al nome del cluster. Un'altra opzione consiste nell'usare un file di configurazione per l'applicazione che è possibile aggiornare senza eseguire di nuovo la distribuzione.
Avviare l'inserimento.
Verificare la coerenza HBase e le operazioni DDL (Data Definition Language) e Data Manipulation Language (DML).
Se il cluster di destinazione è soddisfacente, eliminare il cluster di origine.
Eseguire la migrazione di HBase usando script
Eseguire lo script migrate-hbase-source.sh nel cluster di origine e migrate-hbase-dest.sh nel cluster di destinazione. Usare le istruzioni seguenti per eseguire questi script.
Nota
Questi script non copiano gli elenchi WA precedenti di HBase come parte della migrazione; pertanto, gli script non devono essere usati nei cluster con funzionalità di backup HBase o replica abilitate.
Nel cluster di origine
sudo bash migrate-hbase-source.sh
Nel cluster di destinazione
sudo bash migrate-hbase-dest.sh -f <src_default_Fs>
Argomento obbligatorio per il comando precedente:
-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
Passaggi successivi
Per altre informazioni su Apache HBase e sull'aggiornamento dei cluster HDInsight, vedere gli articoli seguenti: