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:
- Interrompa a ingestão de dados.
- Libere os dados de memstore.
- 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.
- Atualize
fs.defaultFS
nas configurações de serviço do HDFS para se referir ao contêiner de cluster de fonte original. - 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. - Limpe os dados do Zookeeper.
Conclua a migração:
- Limpe e migre o WAL.
- Copie os aplicativos do contêiner padrão do cluster de destino para o contêiner de origem original.
- 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 seu cluster do Apache HBase.
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 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>"
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 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
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:
Faça logon no Apache Ambari no cluster novo em
https://<NEWCLUSTERNAME>.azurehdinsight.net
e interrompa os serviços do HBase.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 parawasbs://hbase-upgrade-old-2021-03-22
.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 parahbase-upgrade-old-2021-03-22
. Se o cluster não tiver Gravações Aceleradas, ignore esta etapa.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 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 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
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
No cluster de destino, salve as alterações e reinicie todos os serviços necessários como Ambari indica.
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.
Migrar o HBase usando scripts
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.
No cluster de origem
sudo bash migrate-hbase-source.sh
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: