Partilhar via


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, consulte 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 pelo tempo para configurar e reiniciar os serviços no novo cluster. Os resultados variam, dependendo do número de nós, quantidade de dados e outras variáveis.

Revise 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. Analise a matriz de compatibilidade da versão do HBase e as notas de versão no Guia de Referência do HBase para verificar se seu aplicativo é compatível com a nova versão.

Aqui está um exemplo de matriz de compatibilidade. Y indica compatibilidade e N indica uma potencial incompatibilidade:

Tipo de compatibilidade Versão principal Versão menor Correção
Compatibilidade de fio cliente-servidor N Y Y
Compatibilidade servidor-servidor N Y Y
Compatibilidade de formato de ficheiro N Y Y
Compatibilidade com a API do cliente N Y Y
Compatibilidade binária do cliente N N Y
Compatibilidade limitada de API do lado do servidor
Estável N Y Y
Evolução N N Y
Instável N N N
Compatibilidade com dependências N Y Y
Compatibilidade operacional N N Y

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

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

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

Prepare o cluster de origem:

  1. Pare a ingestão de dados.
  2. Limpar os dados do memstore.
  3. Pare o HBase através do Ambari.
  4. Para clusters com gravações aceleradas, faça backup do diretório Write Ahead Log (WAL).

Prepare o cluster de destino:

  1. Crie o cluster de destino.
  2. Pare o HBase através do Ambari.
  3. Atualize fs.defaultFS nas configurações do serviço HDFS para fazer referência ao contêiner de cluster de origem original.
  4. Para clusters com gravações aceleradas, atualize hbase.rootdir nas configurações do serviço HBase para fazer referência ao contêiner de cluster de origem original.
  5. Limpe os dados do Zookeeper.

Conclua a migração:

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

Etapas e comandos detalhados de migração

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

Preparar o cluster de origem

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

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

    O HBase grava dados de entrada em um armazenamento na memória chamado memstore. Depois que o memstore atinge um determinado tamanho, o HBase o libera no disco para armazenamento de longo prazo na conta de armazenamento do cluster. A exclusão do cluster de origem após uma atualização também exclui todos os dados nos memstores. Para reter os dados, descarregue manualmente o memstore de cada tabela para o disco antes de efetuar a atualização.

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

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

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

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

    Para obter mais informações sobre como se conectar e usar o Ambari, consulte Gerenciar clusters HDInsight usando a interface do usuário da Web do Ambari.

  5. Se o cluster HBase de origem não tiver Gravações Aceleradas, ignore esta etapa. Para clusters HBase de origem 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
    

Preparar o cluster de destino

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

  2. Entre no Apache Ambari no novo cluster em https://<NEWCLUSTERNAME>.azurehdinsight.nete pare os serviços do HBase.

  3. Em Services>HDFS>Configs>Advanced>Advanced core-site, altere a fs.defaultFS configuração do HDFS para apontar para o nome original do contentor do cluster de origem. 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 Services > HDFS > Configs > Advanced > Advanced core-site e altere o nome do contêiner.

  4. Se o cluster de destino tiver a funcionalidade Gravações Aceleradas, altere o caminho hbase.rootdir para apontar para o nome do container 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 rootdir do HBase.

  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 WAL

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

  • O cluster de destino é sempre o HDI versão 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.

Observação

  • O <source-container-fullpath> para o 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 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 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 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 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 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 Gravações Aceleradas e o cluster de destino tem Gravações 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 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 é o HDI 4.0 sem Gravações Aceleradas e o cluster de destino não tem Gravações 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. Usando o contexto do utilizador sudo -u hdfs, copie a pasta /hdp/apps/<new-version-name> e o seu conteúdo da pasta <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, conforme indicado pelo Ambari.

  3. Aponte seu aplicativo para o cluster de destino.

    Observação

    O nome DNS estático do seu aplicativo é alterado quando você atualiza. Em vez de codificar esse nome DNS, você pode configurar um CNAME nas configurações de DNS do seu nome de domínio que aponte para o nome do cluster. Outra opção é usar um arquivo de configuração para seu aplicativo que você pode atualizar sem reimplantar.

  4. Inicie a ingestão.

  5. Verifique a consistência do HBase e operações simples de DDL (Data Definition Language) e DML (Data Manipulation Language).

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

Migrar 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 as WALs antigas do HBase como parte da migração; portanto, os scripts não devem 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óximos passos

Para saber mais sobre o Apache HBase e a atualização de clusters HDInsight, consulte os seguintes artigos: