Eseguire la migrazione a una nuova versione di Apache HBase e a un nuovo account di archiviazione
Questo articolo illustra come aggiornare il cluster Apache HBase in Azure HDInsight a una versione più recente con un account Archiviazione di Azure diverso.
Questo articolo si applica solo se è necessario usare account di Archiviazione diversi per i cluster di origine e di destinazione. Per aggiornare le versioni con lo stesso account Archiviazione per i cluster di origine e di destinazione, vedere Eseguire la migrazione di Apache HBase a una nuova versione.
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 necessario 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 di HBase e le note sulla versione nella Guida di riferimento di 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 | Y |
Compatibilità API limitata sul lato server | |||
Stable | N | S | S |
In evoluzione | N | N | Y |
Instabile | N | N | N |
Compatibilità tra dipendenze | N | S | S |
Compatibilità operativa | N | N | Y |
Le note sulla versione di HBase devono descrivere eventuali incompatibilità di rilievo. Testare l'applicazione in un cluster che esegue la versione di destinazione di HDInsight e HBase.
Per altre informazioni sulle versioni e sulla compatibilità di HDInsight, vedere Versioni di Azure HDInsight.
Panoramica della migrazione del cluster Apache HBase
Per aggiornare ed eseguire la migrazione del cluster Apache HBase in Azure HDInsight a un nuovo account di archiviazione, seguire questa procedura di base. Per istruzioni dettagliate, vedere i passaggi e i comandi dettagliati.
Preparare il cluster di origine:
- Arrestare l'inserimento dati.
- Scaricare i
memstore
dati. - 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.
- Pulire i dati di Zookeeper.
- Passare all'utente a HBase.
Completare la migrazione:
- Pulire il file system di destinazione, eseguire la migrazione dei dati e rimuovere
/hbase/hbase.id
. - Pulire ed eseguire la migrazione del wal.
- Avviare tutti i servizi dal cluster di destinazione Ambari.
- Verificare HBase.
- Eliminare il cluster di origine.
Passaggi e comandi dettagliati per la migrazione
Usare questi passaggi e comandi dettagliati per eseguire la migrazione del cluster Apache HBase con un nuovo account di archiviazione.
Preparare il cluster di origine
Arrestare l'inserimento nel cluster HBase di origine.
Scaricare il cluster HBase di origine da aggiornare.
HBase scrive i dati in ingresso in un archivio in memoria denominato
memstore
. Dopo avermemstore
raggiunto una determinata dimensione, HBase lo scarica sul 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 inmemstores
. Per conservare i dati, scaricare manualmente ogni tabella su disco prima dell'aggiornamentomemstore
.È possibile scaricare i
memstore
dati eseguendo lo script flush_all_tables.sh dal repository GitHub hbase-utils.È anche possibile scaricare i
memstore
dati eseguendo il comando della shell HBase seguente dall'interno del cluster HDInsight:hbase shell flush "<table-name>"
Accedere ad 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 qualsiasi nodo zookeeper o nodo 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 che usa un account di archiviazione diverso rispetto al cluster di origine.
Accedere ad Apache Ambari nel nuovo cluster in
https://<NEWCLUSTERNAME>.azurehdinsight.net
e arrestare i servizi HBase.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
Impostare l'utente su HBase eseguendo
sudo su hbase
.
Pulire ed eseguire la migrazione del file system e 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 Basic e non è consigliato per i nuovi cluster.
- 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.
Per <container-endpoint-url>
l'account di archiviazione è https://<storageaccount>.blob.core.windows.net/<container-name>
. Passare il token di firma di accesso condiviso per l'account di archiviazione alla fine dell'URL.
- Per
<container-fullpath>
il tipo di archiviazione WASB èwasbs://<container-name>@<storageaccount>.blob.core.windows.net
- Per il
<container-fullpath>
tipo di archiviazione Azure Data Lake Archiviazione Gen2 èabfs://<container-name>@<storageaccount>.dfs.core.windows.net
.
Copiare i comandi
Il comando di copia HDFS è hdfs dfs <copy properties starting with -D> -cp
Usare hadoop distcp
per prestazioni migliori quando si copiano file non in un BLOB di pagine: hadoop distcp <copy properties starting with -D>
Per passare la chiave dell'account di archiviazione, usare:
-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
È anche possibile usare AzCopy per ottenere prestazioni migliori durante la copia dei file di dati HBase.
Eseguire il comando AzCopy:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
Se l'account di archiviazione di destinazione è Archiviazione BLOB di Azure, eseguire questo passaggio dopo la copia. Se l'account di archiviazione di destinazione è Data Lake Archiviazione Gen2, ignorare questo passaggio.
Il driver HADoop WASB usa BLOB speciali di dimensioni 0 corrispondenti a ogni directory. AzCopy ignora questi file durante l'operazione di copia. Alcune operazioni WASB usano questi BLOB, quindi è necessario crearle nel cluster di destinazione. Per creare i BLOB, eseguire il comando Hadoop seguente da qualsiasi nodo nel cluster di destinazione:
sudo -u hbase hadoop fs -chmod -R 0755 /hbase
È possibile scaricare AzCopy da Introduzione ad AzCopy. Per altre informazioni sull'uso di AzCopy, vedere azcopy copy.
Il cluster di origine è HDI 3.6 o HDI 4.0 con scritture accelerate e il cluster di destinazione ha scritture accelerate
Per pulire il file system ed eseguire la migrazione dei dati, eseguire i comandi seguenti:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Rimuovere
hbase.id
eseguendohdfs dfs -rm /hbase/hbase.id
Per pulire ed eseguire la migrazione del wal, eseguire i comandi seguenti:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
Il cluster di origine è HDI 3.6 senza scritture accelerate e il cluster di destinazione ha scritture accelerate
Per pulire il file system ed eseguire la migrazione dei dati, eseguire i comandi seguenti:
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
Rimuovere
hbase.id
eseguendohdfs dfs -rm /hbase/hbase.id
Per pulire ed eseguire la migrazione del wal, eseguire i comandi seguenti:
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
Il cluster di origine è HDI 3.6 senza scritture accelerate e il cluster di destinazione non dispone di scritture accelerate
Per pulire il file system ed eseguire la migrazione dei dati, eseguire i comandi seguenti:
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
Rimuovere
hbase.id
eseguendohdfs dfs -rm /hbase/hbase.id
Per pulire ed eseguire la migrazione del wal, eseguire i comandi seguenti:
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
Il cluster di origine è HDI 4.0 senza scritture accelerate e il cluster di destinazione ha scritture accelerate
Per pulire il file system ed eseguire la migrazione dei dati, eseguire i comandi seguenti:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Rimuovere
hbase.id
eseguendohdfs dfs -rm /hbase/hbase.id
Per pulire ed eseguire la migrazione del wal, eseguire i comandi seguenti:
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
Il cluster di origine è HDI 4.0 senza scritture accelerate e il cluster di destinazione non dispone di scritture accelerate
Per pulire il file system ed eseguire la migrazione dei dati, eseguire i comandi seguenti:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Rimuovere
hbase.id
eseguendohdfs dfs -rm /hbase/hbase.id
Per pulire ed eseguire la migrazione del wal, eseguire i comandi seguenti:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
Completare la migrazione
Nel cluster di destinazione salvare le modifiche e riavviare tutti i servizi necessari come indicato da Ambari.
Puntare l'applicazione al cluster di destinazione.
Nota
Il nome DNS statico per l'applicazione cambia quando si esegue l'aggiornamento. Anziché impostare come hardcoded questo 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 di HBase e le operazioni DDL (Data Definition Language) e DML (Data Manipulation Language).
Se il cluster di destinazione è soddisfacente, eliminare il cluster di origine.
Passaggi successivi
Per altre informazioni su Apache HBase e sull'aggiornamento dei cluster HDInsight, vedere gli articoli seguenti: