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:

  1. Arrestare l'inserimento dei dati.
  2. Scaricare i dati del memstore.
  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. Aggiornare fs.defaultFS le configurazioni del servizio HDFS per fare riferimento al contenitore del cluster di origine originale.
  4. Per i cluster con scritture accelerate, aggiornare hbase.rootdir nelle configurazioni del servizio HBase per fare riferimento al contenitore del cluster di origine originale.
  5. Pulire i dati di Zookeeper.

Completare la migrazione:

  1. Pulire e eseguire la migrazione di WAL.
  2. Copiare le app dal contenitore predefinito del cluster di destinazione nel contenitore di origine originale.
  3. Avviare tutti i servizi dal cluster di destinazione Ambari.
  4. Verificare HBase.
  5. 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

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

  2. 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>"
    
  3. Accedere a 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 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

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

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

  3. In Services> HDFSConfigs>Advanced>Core-site modificare l'impostazione fs.defaultFSHDFS> in modo che punti al nome del contenitore del cluster di origine originale. Ad esempio, l'impostazione nella schermata seguente deve essere modificata in wasbs://hbase-upgrade-old-2021-03-22.

    In Ambari selezionare Services > HDFS > Configs > Advanced > Core-site e modificare il nome del contenitore.

  4. 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 in hbase-upgrade-old-2021-03-22. Se il cluster non dispone di scritture accelerate, ignorare questo passaggio.

    In Ambari modificare il nome del contenitore per hBase rootdir.

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

  1. 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
    
  2. Nel cluster di destinazione salvare le modifiche e riavviare tutti i servizi necessari come Ambari.

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

  4. Avviare l'inserimento.

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

  6. Se il cluster di destinazione è soddisfacente, eliminare il cluster di origine.

Eseguire la migrazione di HBase usando script

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

  2. Nel cluster di origine

    sudo bash migrate-hbase-source.sh
    
  3. 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: