Migrar um cluster Apache HBase para uma nova versão

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

Este artigo se aplica somente se você usar a mesma conta de Armazenamento do Azure para seus clusters de origem e destino. Para atualizar com uma conta de armazenamento nova ou diferente para seu cluster de destino, confira Migrar o Apache HBase para uma nova versão com uma nova conta de armazenamento.

O tempo de inatividade durante a atualização deve ser de apenas alguns minutos. Esse tempo de inatividade é causado pelas etapas para liberar todos os dados na memória e o tempo para configurar e reiniciar os serviços no novo cluster. Os resultados vão variar, dependendo do número de nós, da quantidade de dados e de outras variáveis.

Revisar a compatibilidade do Apache HBase

Antes de atualizar o Apache HBase, verifique se as versões do HBase nos clusters de origem e destino são compatíveis. Revise a matriz de compatibilidade e as notas sobre a versão do HBase no Guia de Referência do HBase para verificar se o aplicativo é compatível com a nova versão.

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

Tipo de compatibilidade Versão principal Versão secundária Patch
Compatibilidade de transferência cliente-servidor N S S
Compatibilidade servidor-servidor N S S
Compatibilidade de formato de arquivo N S S
Compatibilidade de API do cliente N S S
Compatibilidade de binário do cliente N N S
Compatibilidade de API limitada ao lado do servidor
Estável N S S
Evoluindo N N S
Instável N N N
Compatibilidade de dependência N S S
Compatibilidade operacional N N Y

Para saber mais sobre as versões e a compatibilidade do HDInsight, confira Versões do Azure HDInsight.

Visão geral da migração de cluster do Apache HBase

Para atualizar o cluster do Apache HBase no Azure HDInsight, conclua as etapas básicas a seguir. Para obter instruções detalhadas, confira as etapas e os comandos detalhados ou use os scripts da seção Migrar o HBase usando scripts para migração automatizada.

Prepare o cluster de origem:

  1. Interrompa a ingestão de dados.
  2. Libere os dados de memstore.
  3. Interrompa o HBase no Ambari.
  4. Para clusters com gravações aceleradas, faça o back-up do diretório WAL (Write Ahead Log).

Prepare o cluster de destino:

  1. Crie o cluster de destino.
  2. Interrompa o HBase no Ambari.
  3. Atualize fs.defaultFS nas configurações de serviço do HDFS para se referir ao contêiner de cluster de fonte original.
  4. Para clusters com gravações aceleradas, atualize hbase.rootdir nas configurações de serviço do HBase para se referir ao contêiner do cluster de origem original.
  5. Limpe os dados do Zookeeper.

Conclua a migração:

  1. Limpe e migre o WAL.
  2. Copie os aplicativos do contêiner padrão do cluster de destino para o contêiner de origem original.
  3. Inicie todos os serviços no cluster de destino do Ambari.
  4. Verifique o HBase.
  5. Exclua o cluster de origem.

Comandos e etapas de migração detalhadas

Use estas etapas e comandos detalhados para migrar seu cluster do Apache HBase.

Prepare o cluster de origem

  1. Interrompa a ingestão para o cluster de origem do HBase.

  2. Libere o cluster de origem do HBase que você está atualizando.

    O HBase grava os dados de entrada em um armazenamento na memória chamado memstore. Após atingir um determinado tamanho, o HBase libera o memstore para disco para armazenamento de longo prazo na conta de armazenamento do cluster. Excluir o cluster de origem após uma atualização também exclui todos os dados nos memstores. Para manter os dados, libere manualmente o memstore de cada tabela para o disco antes da atualização.

    Você pode liberar os dados de memstore executando o script flush_all_tables.sh do repositório do GitHub hbase-utils do Azure.

    Você também pode liberar os dados de memstore executando o seguinte comando de shell do HBase a partir do cluster do HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. Faça logon no Apache Ambari no cluster de origem com https://<OLDCLUSTERNAME>.azurehdinsight.net e interrompa os serviços do HBase.

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

    Para saber mais sobre como usar e conectar-se ao Ambari, confira Gerenciar clusters HDInsight usando a interface de usuário do Ambari Web.

  5. Se o cluster de origem do HBase não tiver o recurso Gravações Aceleradas, ignore esta etapa. Em clusters de origem do HBase com Gravações Aceleradas, faça backup do diretório WAL em HDFS executando os seguintes comandos de uma sessão SSH em qualquer um dos nós 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
    

Prepare o cluster de destino

  1. No portal do Azure, configure um novo cluster HDInsight de destino usando a mesma conta de armazenamento do cluster de origem, mas com um nome de contêiner diferente:

  2. Faça logon no Apache Ambari no cluster novo em https://<NEWCLUSTERNAME>.azurehdinsight.net e interrompa os serviços do HBase.

  3. Em Serviços>HDFS>Configurações>Avançado>Site de núcleo avançado, altere a configuração HDFS fs.defaultFS para apontar para o nome do contêiner do cluster de origem original. Por exemplo, a configuração na captura de tela a seguir deve ser alterada para wasbs://hbase-upgrade-old-2021-03-22.

    No Ambari, selecione Serviços > HDFS > Configurações > Avançado > Site de núcleo avançado e altere o nome do contêiner.

  4. Se o seu cluster de destino tiver o recurso Gravações Aceleradas, altere o caminho hbase.rootdir para apontar para o nome do contêiner do cluster de origem original. Por exemplo, o caminho a seguir deve ser alterado para hbase-upgrade-old-2021-03-22. Se o cluster não tiver Gravações Aceleradas, ignore esta etapa.

    No Ambari, altere o nome do contêiner para o HBase rootdir.

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

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Limpar e migrar o WAL

Execute os comandos a seguir, dependendo da versão do HDI de origem e se os clusters de origem e de destino têm Gravações Aceleradas.

  • O cluster de destino é sempre HDI versão 4.0, pois o HDI 3.6 está em 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.

Observação

  • O <source-container-fullpath> do tipo de armazenamento WASB é wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • O <source-container-fullpath> para o 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 Gravações Aceleradas, e o cluster de destino tem Gravações Aceleradas

Limpe os dados do WAL FS para o cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Copie o diretório executando os seguintes comandos em qualquer nó do Zookeeper ou nó de trabalho 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 Gravações Aceleradas, e o cluster de destino tem Gravações Aceleradas

Limpe os dados do WAL FS para o cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Copie o diretório executando os seguintes comandos em qualquer nó do Zookeeper ou nó de trabalho 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 gravações aceleradas e o cluster de destino não tem gravações aceleradas

Limpe os dados do WAL FS para o 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 Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas

Limpe os dados do WAL FS para o cluster de destino e copie o diretório WAL do cluster de origem para o HDFS do cluster de destino. Copie o diretório executando os seguintes comandos em qualquer nó do Zookeeper ou nó de trabalho 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 Gravações Aceleradas e o cluster de destino não tem Gravações Aceleradas

Limpe os dados do WAL FS para o 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. Usando o contexto do usuário sudo -u hdfs, copie a pasta /hdp/apps/<new-version-name> e seu conteúdo a partir de <destination-container-fullpath> para a pasta /hdp/apps em <source-container-fullpath>. Você pode copiar a pasta executando 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, salve as alterações e reinicie todos os serviços necessários como Ambari indica.

  3. Aponte seu aplicativo para o cluster de destino.

    Observação

    O nome DNS estático das alterações de aplicativo durante a atualização. Em vez de fazer hard-coding deste nome DNS, você pode configurar um CNAME nas configurações de DNS do nome de domínio que aponta para o nome do cluster. Outra opção é usar um arquivo de configuração para o aplicativo que você pode atualizar sem reimplantação.

  4. Inicie a ingestão.

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

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

Migrar o HBase usando scripts

  1. Execute o script migrate-hbase-source.sh no cluster de origem e migrate-hbase-dest.sh no cluster de destino. Use as instruções a seguir para executar esses scripts.

    Observação

    Esses scripts não copiam os WALs antigos do HBase durante a migração. Portanto, os scripts não podem ser usados em clusters que tenham o recurso de Backup ou Replicação do HBase habilitado.

  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

Próximas etapas

Para saber mais sobre o Apache HBase e como atualizar clusters do HDInsight, consulte os artigos a seguir: