Migrar o Apache HBase para uma nova versão e conta de armazenamento
Este artigo discute como atualizar seu cluster do Apache HBase no Azure HDInsight para uma versão mais recente com uma conta diferente do de Armazenamento do Azure.
Este artigo se aplica somente se você precisar usar contas de armazenamento diferentes para seus clusters de origem e de destino. Para atualizar versões com a mesma conta de armazenamento para seus clusters de origem e de destino, confira Migrar o Apache HBase para uma nova versão.
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 |
Qualquer incompatibilidade significativa deve ser descrita nas notas sobre a versão do HBase. Teste seu aplicativo em um cluster que esteja executando a versão de destino do HDInsight e do HBase.
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 e migrar seu cluster do Apache HBase no Azure HDInsight para uma nova conta de armazenamento, conclua as etapas básicas a seguir. Para obter instruções detalhadas, confira as etapas e comandos detalhados.
Prepare o cluster de origem:
- Interrompa a ingestão de dados.
- Liberar
memstore
dados. - Interrompa o HBase no Ambari.
- Para clusters com gravações aceleradas, faça o back-up do diretório WAL (Write Ahead Log).
Prepare o cluster de destino:
- Crie o cluster de destino.
- Interrompa o HBase no Ambari.
- Limpe os dados do Zookeeper.
- Alterne o usuário para o HBase.
Conclua a migração:
- Limpe o sistema de arquivos de destino, migre os dados e remova
/hbase/hbase.id
. - Limpe e migre o WAL.
- Inicie todos os serviços no cluster de destino do Ambari.
- Verifique o HBase.
- Exclua o cluster de origem.
Comandos e etapas de migração detalhadas
Use estas etapas e comandos detalhados para migrar o cluster do Apache HBase com uma nova conta de armazenamento.
Prepare o cluster de origem
Interrompa a ingestão para o cluster de origem do HBase.
Libere o cluster de origem do HBase que você está atualizando.
O HBase grava dados de entrada em um repositório na memória chamado
memstore
. Depois dememstore
atingir um determinado tamanho, o HBase o libera em 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 nomemstores
. Para manter os dados, libere manualmente omemstore
de cada tabela para o disco antes de atualizar.Você pode liberar os
memstore
dados executando o script flush_all_tables.sh do repositório GitHub do hbase-utils.Você também pode liberar os
memstore
dados executando o seguinte comando de shell do HBase de dentro do cluster HDInsight:hbase shell flush "<table-name>"
Faça logon no Apache Ambari no cluster de origem com
https://<OLDCLUSTERNAME>.azurehdinsight.net
e interrompa os serviços do HBase.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.
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 o back-up do diretório WAL no HDFS executando os comandos a seguir em uma sessão SSH em qualquer nó do Zookeeper no cluster de origem ou nó de trabalho.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Prepare o cluster de destino
No portal do Azure, configure um novo cluster de destino do HDInsight que usa uma conta de armazenamento diferente do cluster de origem.
Faça logon no Apache Ambari no cluster novo em
https://<NEWCLUSTERNAME>.azurehdinsight.net
e interrompa os serviços do HBase.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
Alterne o usuário para o HBase executando
sudo su hbase
.
Limpar e migrar o sistema de arquivos e 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 cluster de origem é HDI 3.6 com Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas.
- O cluster de origem é HDI 3.6 sem Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas.
- O cluster de origem é HDI 3.6 sem Gravações Aceleradas e o cluster de destino não tem Gravações Aceleradas.
- O cluster de origem é HDI 4.0 com Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas.
- O cluster de origem é HDI 4.0 sem Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas.
- O cluster de origem é HDI 4.0 sem Gravações Aceleradas e o cluster de destino não tem Gravações Aceleradas.
O <container-endpoint-url>
da 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>
do tipo de armazenamento WASB éwasbs://<container-name>@<storageaccount>.blob.core.windows.net
- O
<container-fullpath>
para o tipo de armazenamento Azure Data Lake Storage Gen2 éabfs://<container-name>@<storageaccount>.dfs.core.windows.net
.
Comandos de cópia
O comando de cópia do HDFS é hdfs dfs <copy properties starting with -D> -cp
Use hadoop distcp
para melhorar o desempenho ao copiar arquivos que não estão em um blob de páginas: hadoop distcp <copy properties starting with -D>
Para passar a chave da conta de armazenamento, use:
-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
Você também pode usar AzCopy para melhorar o desempenho ao copiar arquivos de dados do HBase.
Execute o comando AzCopy:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
Se a conta de armazenamento de destino for o Armazenamento de Blobs do Azure, siga esta etapa após a cópia. Se a conta de armazenamento de destino for o Data Lake Storage Gen2, ignore esta etapa.
O driver WASB do Hadoop usa blobs especiais de tamanho 0 correspondentes a cada diretório. O AzCopy ignora esses arquivos ao fazer a cópia. Algumas operações WASB usam esses blobs, portanto, você deve criar esses blobs no cluster de destino. Para criar os blobs, execute o seguinte comando do Hadoop em qualquer nó no cluster de destino:
sudo -u hbase hadoop fs -chmod -R 0755 /hbase
Você pode baixar o AzCopy em Introdução ao AzCopy. Para saber mais sobre o uso do AzCopy, confira azcopy copy.
O cluster de origem é HDI 3.6 ou HDI 4.0 com Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas
Para limpar o sistema de arquivos e migrar dados, execute os seguintes comandos:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Remova
hbase.id
executandohdfs dfs -rm /hbase/hbase.id
Para limpar e migrar o WAL, execute 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 Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas
Para limpar o sistema de arquivos e migrar dados, execute 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
Remova
hbase.id
executandohdfs dfs -rm /hbase/hbase.id
Para limpar e migrar o WAL, execute 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 Gravações Aceleradas e o cluster de destino não tem Gravações Aceleradas
Para limpar o sistema de arquivos e migrar dados, execute 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
Remova
hbase.id
executandohdfs dfs -rm /hbase/hbase.id
Para limpar e migrar o WAL, execute 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 Gravações Aceleradas e o cluster de destino tem Gravações Aceleradas
Para limpar o sistema de arquivos e migrar dados, execute os seguintes comandos:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Remova
hbase.id
executandohdfs dfs -rm /hbase/hbase.id
Para limpar e migrar o WAL, execute 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 Gravações Aceleradas e o cluster de destino não tem Gravações Aceleradas
Para limpar o sistema de arquivos e migrar dados, execute os seguintes comandos:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Remova
hbase.id
executandohdfs dfs -rm /hbase/hbase.id
Para limpar e migrar o WAL, execute os seguintes comandos:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
Concluir a migração
No cluster de destino, salve suas alterações e reinicie todos os serviços necessários, conforme indicado pelo Ambari.
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.
Inicie a ingestão.
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).
Se o cluster de destino for satisfatório, exclua o cluster de origem.
Próximas etapas
Para saber mais sobre o Apache HBase e como atualizar clusters do HDInsight, consulte os artigos a seguir: