Migrar o Apache HBase para uma nova versão e conta de armazenamento

Este artigo discute como atualizar o seu cluster Apache HBase no Azure HDInsight para uma versão mais recente com uma conta Armazenamento Azure diferente.

Este artigo só se aplica se precisar de utilizar diferentes Armazenamento contas para os seus clusters de origem e destino. Para atualizar versões com os mesmos Armazenamento contabilizar os seus clusters de origem e destino, consulte a Migração Apache HBase para uma nova versão.

O tempo de paragem durante a atualização deve ser de apenas alguns minutos. Este tempo de inatividade é causado pelos passos para descarregar todos os dados de memória, e o tempo para configurar e reiniciar os serviços no novo cluster. Os seus resultados variarão, dependendo do número de nós, quantidade de dados e outras variáveis.

Rever compatibilidade apache HBase

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

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

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

As notas de lançamento da versão HBase devem descrever quaisquer incompatibilidades de rutura. Teste a sua aplicação num cluster que executa a versão alvo de HDInsight e HBase.

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

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

Para atualizar e migrar o seu cluster Apache HBase no Azure HDInsight para uma nova conta de armazenamento, você completa os seguintes passos básicos. Para obter instruções detalhadas, consulte os passos e comandos detalhados.

Preparar o cluster de origem:

  1. Pare a ingestão de dados.
  2. Despeje os dados do memstore.
  3. Pare a Base H de Ambari.
  4. Para clusters com escritas aceleradas, volte a subir o diretório Write Ahead Log (WAL).

Preparar o cluster de destino:

  1. Crie o cluster de destino.
  2. Pare a Base H de Ambari.
  3. Dados do Zookeeper limpos.
  4. Mude o utilizador para HBase.

Complete a migração:

  1. Limpe o sistema de ficheiros de destino, migrar os dados e remover /hbase/hbase.id.
  2. Limpar e migrar o WAL.
  3. Inicie todos os serviços do cluster de destino Ambari.
  4. Verifique a Base H.
  5. Apague o aglomerado de origem.

Etapas e comandos de migração detalhados

Utilize estes passos e comandos detalhados para migrar o seu cluster Apache HBase com uma nova conta de armazenamento.

Prepare o cluster de origem

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

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

    A HBase escreve dados de entrada numa loja de memórias chamada memstore. Depois de a memstore atingir um determinado tamanho, a HBase coloca-a em disco para armazenamento a longo prazo na conta de armazenamento do cluster. A eliminação do cluster de origem após uma atualização também elimina quaisquer dados nas memstores. Para reter os dados, lave manualmente a memstore de cada mesa para o disco antes de atualizar.

    Pode descarregar os dados da memstore executando o script flush_all_tables.sh a partir do repositório hbase-utils GitHub.

    Também pode descarregar os dados da memstore executando o seguinte comando de concha HBase a partir de dentro do cluster HDInsight:

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

  4. Na indicação de confirmação, selecione a caixa para ligar o modo de manutenção para a Base H.

    Para obter mais informações sobre a ligação e utilização de Ambari, consulte gerir os clusters HDInsight utilizando o Ambari Web UI.

  5. Se o seu cluster HBase de origem não tiver a função De Escritas Aceleradas , salte este passo. Para os clusters HBase de origem com Writes Acelerados, faça uma assistência ao diretório WAL em HDFS, executando os seguintes comandos a partir de uma sessão SSH em qualquer nó do zookeeper de origem ou nó do trabalhador.

    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, crie um novo cluster de destino HDInsight que usa uma conta de armazenamento diferente do seu cluster de origem.

  2. Inscreva-se no Apache Ambari no novo cluster https://<NEWCLUSTERNAME>.azurehdinsight.nete pare os serviços HBase.

  3. Limpe os dados do Zookeeper no cluster de destino executando os seguintes comandos em qualquer nó do Zookeeper ou node do trabalhador:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    
  4. Mude o utilizador para HBase executando sudo su hbase.

Limpe e emigre o sistema de ficheiros e WAL

Executar os seguintes comandos, dependendo da sua versão HDI de origem e se os clusters de origem e destino têm Writes Acelerados. O cluster de destino é sempre a versão 4.0 do HDI, uma vez que o HDI 3.6 está no suporte básico e não é recomendado para novos clusters.

A <container-endpoint-url> conta de armazenamento é https://<storageaccount>.blob.core.windows.net/<container-name>. Passe o token SAS para a conta de armazenamento no final da URL.

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

Comandos de cópia

O comando de cópia HDFS é hdfs dfs <copy properties starting with -D> -cp

Utilize hadoop distcp para um melhor desempenho ao copiar ficheiros que não estão numa bolha de página: hadoop distcp <copy properties starting with -D>

Para passar a chave da conta de armazenamento, utilize:

  • -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

Também pode utilizar o AzCopy para um melhor desempenho ao copiar ficheiros de dados HBase.

  1. Executar o comando AzCopy:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. Se a conta de armazenamento de destino for o armazenamento Azure Blob, faça este passo após a cópia. Se a conta de armazenamento de destino for Data Lake Storage Gen2, salte este passo.

    O condutor Hadoop WASB utiliza bolhas especiais de 0 tamanhos correspondentes a todos os diretórios. A AzCopy ignora estes ficheiros ao fazer a cópia. Algumas operações wasb usam estas bolhas, por isso deve criá-las no cluster de destino. Para criar as bolhas, executar o seguinte comando Hadoop a partir de qualquer nó no cluster de destino:

    sudo -u hbase hadoop fs -chmod -R 0755 /hbase
    

Você pode baixar AzCopy de Introdução com AzCopy. Para obter mais informações sobre a utilização do AzCopy, consulte a cópia azcopia.

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

  1. Para limpar o sistema de ficheiros e migrar dados, executar os seguintes comandos:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Remover hbase.id correndo hdfs dfs -rm /hbase/hbase.id

  3. Para limpar e migrar o WAL, executar os seguintes comandos:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
    

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

  1. Para limpar o sistema de ficheiros e migrar dados, executar os seguintes comandos:

    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. Remover hbase.id correndo hdfs dfs -rm /hbase/hbase.id

  3. Para limpar e migrar o WAL, executar os seguintes comandos:

    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
    

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

  1. Para limpar o sistema de ficheiros e migrar dados, executar os seguintes comandos:

    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. Remover hbase.id correndo hdfs dfs -rm /hbase/hbase.id

  3. Para limpar e migrar o WAL, executar os seguintes comandos:

    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
    

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

  1. Para limpar o sistema de ficheiros e migrar dados, executar os seguintes comandos:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Remover hbase.id correndo hdfs dfs -rm /hbase/hbase.id

  3. Para limpar e migrar o WAL, executar os seguintes comandos:

    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
    

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

  1. Para limpar o sistema de ficheiros e migrar dados, executar os seguintes comandos:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Remover hbase.id correndo hdfs dfs -rm /hbase/hbase.id

  3. Para limpar e migrar o WAL, executar os seguintes comandos:

    hdfs dfs -rm -r /hbase-wals/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
    

Complete a migração

  1. No cluster de destino, guarde as suas alterações e reinicie todos os serviços necessários, conforme indicado pela Ambari.

  2. Aponte a sua candidatura para o cluster de destino.

    Nota

    O nome DE DNS estático para a sua aplicação muda quando atualiza. Em vez de codificar duramente este nome DNS, pode configurar um CNAME nas definições de 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 recolocar.

  3. Comece a ingestão.

  4. Verifique a consistência da HBase e as operações simples de linguagem de definição de dados (DDL) e linguagem de manipulação de dados (DML).

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

Passos seguintes

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