Condividi tramite


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:

  1. Arrestare l'inserimento dati.
  2. Scaricare i memstore dati.
  3. Arrestare HBase da Ambari.
  4. Per i cluster con scritture accelerate, eseguire il backup della directory Write Ahead Log (WAL).

Preparare il cluster di destinazione:

  1. Creare il cluster di destinazione.
  2. Arrestare HBase da Ambari.
  3. Pulire i dati di Zookeeper.
  4. Passare all'utente a HBase.

Completare la migrazione:

  1. Pulire il file system di destinazione, eseguire la migrazione dei dati e rimuovere /hbase/hbase.id.
  2. Pulire ed eseguire la migrazione del wal.
  3. Avviare tutti i servizi dal cluster di destinazione Ambari.
  4. Verificare HBase.
  5. 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

  1. Arrestare l'inserimento nel cluster HBase di origine.

  2. Scaricare il cluster HBase di origine da aggiornare.

    HBase scrive i dati in ingresso in un archivio in memoria denominato memstore. Dopo aver memstore 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 in memstores. Per conservare i dati, scaricare manualmente ogni tabella su disco prima dell'aggiornamento memstore .

    È 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>"
    
  3. Accedere ad Apache Ambari nel cluster di origine con https://<OLDCLUSTERNAME>.azurehdinsight.nete arrestare i servizi HBase.

  4. 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.

  5. 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

  1. Nella portale di Azure configurare un nuovo cluster HDInsight di destinazione che usa un account di archiviazione diverso rispetto al cluster di origine.

  2. Accedere ad Apache Ambari nel nuovo cluster in https://<NEWCLUSTERNAME>.azurehdinsight.nete arrestare i servizi HBase.

  3. 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
    
  4. 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.

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.

  1. Eseguire il comando AzCopy:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. 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

  1. 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 /
    
  2. Rimuovere hbase.id eseguendo hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. 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
    
  2. Rimuovere hbase.id eseguendo hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. 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
    
  2. Rimuovere hbase.id eseguendo hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. 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 /
    
  2. Rimuovere hbase.id eseguendo hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. 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 /
    
  2. Rimuovere hbase.id eseguendo hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. Nel cluster di destinazione salvare le modifiche e riavviare tutti i servizi necessari come indicato da Ambari.

  2. 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.

  3. Avviare l'inserimento.

  4. Verificare la coerenza di HBase e le operazioni DDL (Data Definition Language) e DML (Data Manipulation Language).

  5. 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: