Migrar um cluster do Apache HBase para uma nova versão

Este artigo aborda como atualizar o cluster do Apache HBase no Azure HDInsight para uma versão mais recente.

Este artigo aplica-se apenas se utilizar a mesma conta de Armazenamento do Azure para os clusters de origem e de destino. Para atualizar com uma conta de Armazenamento nova ou diferente para o cluster de destino, veja Migrar o Apache HBase para uma nova versão com uma nova conta de Armazenamento.

O período de indisponibilidade durante a atualização deve ser de apenas alguns minutos. Este período de indisponibilidade é causado pelos passos para remover todos os dados dentro da memória e o tempo para configurar e reiniciar os serviços no novo cluster. Os resultados variam consoante o número de nós, a quantidade de dados e outras variáveis.

Rever a compatibilidade do Apache HBase

Antes de atualizar o Apache HBase, certifique-se de que as versões do HBase nos clusters de origem e de destino são compatíveis. Reveja a matriz de compatibilidade da versão do HBase e as notas de versão no Guia de Referência do HBase para se certificar de que a sua aplicação é compatível com a nova versão.

Eis uma matriz de compatibilidade de exemplo. Y indica compatibilidade e N indica uma potencial incompatibilidade:

Tipo de compatibilidade Versão principal Versão secundária Patch
Client-Server compatibilidade com fios N Y Y
compatibilidade Server-Server N Y Y
Compatibilidade com formato de ficheiro N Y Y
Compatibilidade com a API de Cliente N Y Y
Compatibilidade binária do cliente N N Y
Compatibilidade limitada da API do lado do servidor
Estável N Y Y
Em evolução N N Y
Instável N N N
Compatibilidade de dependências N Y Y
Compatibilidade operacional N N Y

Para obter mais informações sobre as versões e compatibilidade do HDInsight, veja Versões do Azure HDInsight.

Descrição geral da migração do cluster do Apache HBase

Para atualizar o cluster do Apache HBase no Azure HDInsight, conclua os seguintes passos básicos. Para obter instruções detalhadas, veja os passos e comandos detalhados ou utilize os scripts da secção Migrar HBase com scripts para migração automatizada.

Preparar o cluster de origem:

  1. Parar a ingestão de dados.
  2. Remova os dados do memstore.
  3. Pare o HBase a partir do Ambari.
  4. Para clusters com escritas aceleradas, faça uma cópia de segurança do diretório Write Ahead Log (WAL).

Preparar o cluster de destino:

  1. Crie o cluster de destino.
  2. Pare o HBase a partir do Ambari.
  3. Atualize fs.defaultFS nas configurações do serviço HDFS para se referir ao contentor de cluster de origem original.
  4. Para clusters com escritas aceleradas, atualize hbase.rootdir as configurações do serviço HBase para se referir ao contentor de cluster de origem original.
  5. Limpar dados do Zookeeper.

Conclua a migração:

  1. Limpe e migre a WAL.
  2. Copie as aplicações do contentor predefinido do cluster de destino para o contentor de origem original.
  3. Inicie todos os serviços a partir do cluster de destino do Ambari.
  4. Verifique o HBase.
  5. Elimine o cluster de origem.

Passos e comandos de migração detalhados

Utilize estes passos e comandos detalhados para migrar o cluster do Apache HBase.

Preparar o cluster de origem

  1. Pare a ingestão no cluster HBase de origem.

  2. Remova o cluster HBase de origem que está a atualizar.

    O HBase escreve dados recebidos num arquivo dentro da memória chamado memstore. Depois de o memstore atingir um determinado tamanho, o HBase remove-o para o disco para armazenamento de longa duração na conta de armazenamento do cluster. Eliminar o cluster de origem após uma atualização também elimina quaisquer dados nos memstores. Para reter os dados, descarregue manualmente o memstore de cada tabela para o disco antes de atualizar.

    Pode remover os dados do memstore ao executar o script flush_all_tables.sh a partir do repositório do GitHub do Azure hbase-utils.

    Também pode remover dados memstore ao executar o seguinte comando da shell do HBase a partir do cluster do HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. Inicie sessão no Apache Ambari no cluster de origem com https://<OLDCLUSTERNAME>.azurehdinsight.nete pare os serviços HBase.

  4. Na linha de confirmação, selecione a caixa para ativar o modo de manutenção do HBase.

    Para obter mais informações sobre como ligar e utilizar o Ambari, veja Manage HDInsight clusters by using the Ambari Web UI (Gerir clusters do HDInsight com a IU da Web do Ambari).

  5. Se o cluster HBase de origem não tiver a funcionalidade Escritas Aceleradas , ignore este passo. Para clusters HBase de origem com Escritas Aceleradas, faça uma cópia de segurança do diretório WAL em HDFS ao executar os seguintes comandos a partir de uma sessão SSH em qualquer um dos nós do Zookeeper ou nós de trabalho do cluster de origem.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

Preparar o cluster de destino

  1. No portal do Azure, configure um novo cluster do HDInsight de destino com a mesma conta de armazenamento que o cluster de origem, mas com um nome de contentor diferente:

  2. Inicie sessão no Apache Ambari no novo cluster em https://<NEWCLUSTERNAME>.azurehdinsight.nete pare os serviços HBase.

  3. Em Serviços>HDFS>Configs>Advanced>Advanced core-site, altere a definição HDFS fs.defaultFS para apontar para o nome original do contentor do cluster de origem. Por exemplo, a definição na seguinte captura de ecrã deve ser alterada para wasbs://hbase-upgrade-old-2021-03-22.

    No Ambari, selecione Serviços > Configurações > HDFS > Advanced Advanced > core-site e altere o nome do contentor.

  4. Se o cluster de destino tiver a funcionalidade Escritas Aceleradas, altere o hbase.rootdir caminho para apontar para o nome do contentor do cluster de origem original. Por exemplo, o seguinte caminho deve ser alterado para hbase-upgrade-old-2021-03-22. Se o cluster não tiver Escritas Aceleradas, ignore este passo.

    No Ambari, altere o nome do contentor para o rootdir do HBase.

  5. Limpe os dados do Zookeeper no cluster de destino ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Limpar e migrar WAL

Execute os seguintes comandos, consoante a versão do HDI de origem e se os clusters de origem e de destino têm Escritas Aceleradas.

  • O cluster de destino é sempre a versão HDI 4.0, uma vez que o HDI 3.6 está no suporte Básico e não é recomendado para novos clusters.
  • O comando de cópia do HDFS é hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

Nota

  • O para o <source-container-fullpath> tipo de armazenamento WASB é wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • O <source-container-fullpath> tipo de armazenamento Azure Data Lake Storage Gen2 é abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net.

O cluster de origem é HDI 3.6 ou HDI 4.0 com Escritas Aceleradas e o cluster de destino tem Escritas Aceleradas

Limpe os dados WAL FS do cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Copie o diretório ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper no cluster de destino:

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/

O cluster de origem é HDI 3.6 sem Escritas Aceleradas e o cluster de destino tem Escritas Aceleradas

Limpe os dados WAL FS do cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Copie o diretório ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper no cluster de destino:

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

O cluster de origem é HDI 3.6 sem Escritas Aceleradas e o cluster de destino não tem Escritas Aceleradas

Limpe os dados WAL FS do cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Para copiar o diretório, execute os seguintes comandos em qualquer nó do Zookeeper ou nó de trabalho no cluster de destino:

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

O cluster de origem é HDI 4.0 sem Escritas Aceleradas e o cluster de destino tem Escritas Aceleradas

Limpe os dados WAL FS do cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Copie o diretório ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper no cluster de destino:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal

O cluster de origem é HDI 4.0 sem Escritas Aceleradas e o cluster de destino não tem Escritas Aceleradas

Limpe os dados WAL FS do cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Para copiar o diretório, execute os seguintes comandos em qualquer nó do Zookeeper ou nó de trabalho no cluster de destino:

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 /

Concluir a migração

  1. Com o contexto de sudo -u hdfs utilizador, copie a pasta /hdp/apps/<new-version-name> e os respetivos conteúdos da <destination-container-fullpath> pasta para a /hdp/apps pasta em <source-container-fullpath>. Pode copiar a pasta ao executar os seguintes comandos no cluster de destino:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
    

    Por exemplo:

    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. No cluster de destino, guarde as alterações e reinicie todos os serviços necessários, como indica o Ambari.

  3. Aponte a aplicação para o cluster de destino.

    Nota

    O nome DNS estático da sua aplicação é alterado quando atualiza. Em vez de codificar este nome DNS, pode configurar um CNAME nas definições DNS do seu nome de domínio que aponta para o nome do cluster. Outra opção é utilizar um ficheiro de configuração para a sua aplicação que pode atualizar sem reimplementar.

  4. Inicie a ingestão.

  5. Verifique a consistência do HBase e as operações DDL (Data Definition Language) simples e Linguagem de Manipulação de Dados (DML).

  6. Se o cluster de destino for satisfatório, elimine o cluster de origem.

Migrar o HBase com scripts

  1. Execute o script migrate-hbase-source.sh no cluster de origem e migrate-hbase-dest.sh no cluster de destino. Utilize as seguintes instruções para executar estes scripts.

    Nota

    Estes scripts não copiam as WALs antigas do HBase como parte da migração; Por conseguinte, os scripts não devem ser utilizados em clusters que tenham a Funcionalidade de Cópia de Segurança ou Replicação do HBase ativada.

  2. No cluster de origem

    sudo bash migrate-hbase-source.sh
    
  3. No cluster de destino

    sudo bash migrate-hbase-dest.sh  -f <src_default_Fs>
    

Argumento obrigatório para o comando acima:

   -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

Passos seguintes

Para saber mais sobre o Apache HBase e atualizar clusters do HDInsight, veja os seguintes artigos: