Migrar o Apache HBase para uma nova versão e conta de armazenamento
Este artigo descreve como atualizar seu cluster Apache HBase no Azure HDInsight para uma versão mais recente com uma conta de Armazenamento do Azure diferente.
Este artigo se aplica somente se você precisar usar contas de armazenamento diferentes para seus clusters de origem e destino. Para atualizar versões com a mesma conta de armazenamento para seus clusters de origem e destino, consulte 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 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 secundária | Patch |
---|---|---|---|
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 de dependência | N | Y | Y |
Compatibilidade operacional | N | N | Y |
As notas de versão da versão do HBase devem descrever quaisquer incompatibilidades de quebra. Teste seu aplicativo em um cluster que executa a versão de destino do HDInsight e do HBase.
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 e migrar seu cluster Apache HBase no Azure HDInsight para uma nova conta de armazenamento, conclua as etapas básicas a seguir. Para obter instruções detalhadas, consulte as etapas e comandos detalhados.
Prepare o cluster de origem:
- Pare a ingestão de dados.
- Liberar
memstore
dados. - Pare o HBase de Ambari.
- Para clusters com gravações aceleradas, faça backup do diretório Write Ahead Log (WAL).
Prepare o cluster de destino:
- Crie o cluster de destino.
- Pare o HBase de Ambari.
- Limpe os dados do Zookeeper.
- Mude de usuário para o HBase.
Conclua a migração:
- Limpe o sistema de arquivos de destino, migre os dados e remova
/hbase/hbase.id
o . - Limpe e migre o WAL.
- Inicie todos os serviços a partir do cluster de destino Ambari.
- Verifique o HBase.
- Exclua o cluster de origem.
Etapas e comandos detalhados de migração
Use estas etapas e comandos detalhados para migrar seu cluster Apache HBase com uma nova conta de armazenamento.
Preparar o cluster de origem
Pare a ingestão no cluster HBase de origem.
Libere o cluster HBase de origem que você está atualizando.
O HBase grava dados de entrada em um armazenamento na memória chamado
memstore
. Depois de atingir um determinado tamanho, omemstore
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 nomemstores
. Para reter os dados, libere manualmente cada tabela no disco antes dememstore
atualizar.Você pode liberar os
memstore
dados executando o script flush_all_tables.sh a partir do repositório GitHub hbase-utils.Você também pode liberar os
memstore
dados executando o seguinte comando do shell do HBase de dentro do cluster HDInsight:hbase shell flush "<table-name>"
Entre no Apache Ambari no cluster de origem com
https://<OLDCLUSTERNAME>.azurehdinsight.net
o , e pare os serviços do HBase.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.
Se o cluster HBase de origem não tiver o recurso Gravações Aceleradas , ignore esta etapa. Para clusters HBase de origem com Accelerated Writes, faça backup do diretório WAL em HDFS executando os seguintes comandos de uma sessão SSH em qualquer cluster de origem, nó Zookeeper ou nó de trabalho.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Preparar o cluster de destino
No portal do Azure, configure um novo cluster HDInsight de destino que use uma conta de armazenamento diferente do cluster de origem.
Entre no Apache Ambari no novo cluster em
https://<NEWCLUSTERNAME>.azurehdinsight.net
e pare os serviços do HBase.Limpe os dados do Zookeeper no cluster de destino executando os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper:
hbase zkcli rmr /hbase-unsecure quit
Mude o usuário para o HBase executando
sudo su hbase
.
Limpe e migre o sistema de arquivos e a 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 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>
para a 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>
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
.
Copiar comandos
O comando de cópia do HDFS é hdfs dfs <copy properties starting with -D> -cp
Use hadoop distcp
para obter melhor desempenho ao copiar arquivos que não estejam em um blob de página: 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 o AzCopy para obter um melhor 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 Blob do Azure, execute esta etapa após a cópia. Se a conta de armazenamento de destino for Data Lake Storage Gen2, ignore esta etapa.
O driver Hadoop WASB usa blobs especiais de tamanho 0 correspondentes a cada diretório. AzCopy ignora esses arquivos ao fazer a cópia. Algumas operações WASB usam esses blobs, portanto, você deve criá-los no cluster de destino. Para criar os blobs, execute 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 o AzCopy em Introdução ao AzCopy. Para obter mais informações sobre como usar o AzCopy, consulte 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 /
Remover
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
Remover
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
Remover
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 /
Remover
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 é o 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 /
Remover
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 as alterações e reinicie todos os serviços necessários, conforme indicado pelo Ambari.
Aponte seu aplicativo para o cluster de destino.
Nota
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.
Inicie a ingestão.
Verifique a consistência do HBase e operações simples de DDL (Data Definition Language) e DML (Data Manipulation Language).
Se o cluster de destino for satisfatório, exclua o cluster de origem.
Próximos passos
Para saber mais sobre o Apache HBase e a atualização de clusters HDInsight, consulte os seguintes artigos: