Migrar um cluster do Apache HBase para uma nova versão
Este artigo aborda como atualizar o cluster do Apache HBase no Azure HDInsight para uma versão mais recente.
Este artigo aplica-se apenas se utilizar a mesma conta de Armazenamento do Azure para os clusters de origem e de destino. Para atualizar com uma conta de Armazenamento nova ou diferente para o cluster de destino, veja Migrar o Apache HBase para uma nova versão com uma nova conta de Armazenamento.
O período de indisponibilidade durante a atualização deve ser de apenas alguns minutos. Este período de indisponibilidade é causado pelos passos para remover todos os dados dentro da memória e o tempo para configurar e reiniciar os serviços no novo cluster. Os resultados variam consoante o número de nós, a quantidade de dados e outras variáveis.
Rever a compatibilidade do Apache HBase
Antes de atualizar o Apache HBase, certifique-se de que as versões do HBase nos clusters de origem e de destino são compatíveis. Reveja a matriz de compatibilidade da versão do HBase e as notas de versão no Guia de Referência do HBase para se certificar de que a sua aplicação é compatível com a nova versão.
Eis uma matriz de compatibilidade de exemplo. Y indica compatibilidade e N indica uma potencial incompatibilidade:
Tipo de compatibilidade | Versão principal | Versão secundária | Patch |
---|---|---|---|
Client-Server compatibilidade com fios | N | Y | Y |
compatibilidade Server-Server | N | Y | Y |
Compatibilidade com formato de ficheiro | N | Y | Y |
Compatibilidade com a API de Cliente | N | Y | Y |
Compatibilidade binária do cliente | N | N | Y |
Compatibilidade limitada da API do lado do servidor | |||
Estável | N | Y | Y |
Em evolução | N | N | Y |
Instável | N | N | N |
Compatibilidade de dependências | N | Y | Y |
Compatibilidade operacional | N | N | Y |
Para obter mais informações sobre as versões e compatibilidade do HDInsight, veja Versões do Azure HDInsight.
Descrição geral da migração do cluster do Apache HBase
Para atualizar o cluster do Apache HBase no Azure HDInsight, conclua os seguintes passos básicos. Para obter instruções detalhadas, veja os passos e comandos detalhados ou utilize os scripts da secção Migrar HBase com scripts para migração automatizada.
Preparar o cluster de origem:
- Parar a ingestão de dados.
- Remova os dados do memstore.
- Pare o HBase a partir do Ambari.
- Para clusters com escritas aceleradas, faça uma cópia de segurança do diretório Write Ahead Log (WAL).
Preparar o cluster de destino:
- Crie o cluster de destino.
- Pare o HBase a partir do Ambari.
- Atualize
fs.defaultFS
nas configurações do serviço HDFS para se referir ao contentor de cluster de origem original. - Para clusters com escritas aceleradas, atualize
hbase.rootdir
as configurações do serviço HBase para se referir ao contentor de cluster de origem original. - Limpar dados do Zookeeper.
Conclua a migração:
- Limpe e migre a WAL.
- Copie as aplicações do contentor predefinido do cluster de destino para o contentor de origem original.
- Inicie todos os serviços a partir do cluster de destino do Ambari.
- Verifique o HBase.
- Elimine o cluster de origem.
Passos e comandos de migração detalhados
Utilize estes passos e comandos detalhados para migrar o cluster do Apache HBase.
Preparar o cluster de origem
Pare a ingestão no cluster HBase de origem.
Remova o cluster HBase de origem que está a atualizar.
O HBase escreve dados recebidos num arquivo dentro da memória chamado memstore. Depois de o memstore atingir um determinado tamanho, o HBase remove-o para o disco para armazenamento de longa duração na conta de armazenamento do cluster. Eliminar o cluster de origem após uma atualização também elimina quaisquer dados nos memstores. Para reter os dados, descarregue manualmente o memstore de cada tabela para o disco antes de atualizar.
Pode remover os dados do memstore ao executar o script flush_all_tables.sh a partir do repositório do GitHub do Azure hbase-utils.
Também pode remover dados memstore ao executar o seguinte comando da shell do HBase a partir do cluster do HDInsight:
hbase shell flush "<table-name>"
Inicie sessão no Apache Ambari no cluster de origem com
https://<OLDCLUSTERNAME>.azurehdinsight.net
e pare os serviços HBase.Na linha de confirmação, selecione a caixa para ativar o modo de manutenção do HBase.
Para obter mais informações sobre como ligar e utilizar o Ambari, veja Manage HDInsight clusters by using the Ambari Web UI (Gerir clusters do HDInsight com a IU da Web do Ambari).
Se o cluster HBase de origem não tiver a funcionalidade Escritas Aceleradas , ignore este passo. Para clusters HBase de origem com Escritas Aceleradas, faça uma cópia de segurança do diretório WAL em HDFS ao executar os seguintes comandos a partir de uma sessão SSH em qualquer um dos nós do 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
No portal do Azure, configure um novo cluster do HDInsight de destino com a mesma conta de armazenamento que o cluster de origem, mas com um nome de contentor diferente:
Inicie sessão no Apache Ambari no novo cluster em
https://<NEWCLUSTERNAME>.azurehdinsight.net
e pare os serviços HBase.Em Serviços>HDFS>Configs>Advanced>Advanced core-site, altere a definição HDFS
fs.defaultFS
para apontar para o nome original do contentor do cluster de origem. Por exemplo, a definição na seguinte captura de ecrã deve ser alterada parawasbs://hbase-upgrade-old-2021-03-22
.Se o cluster de destino tiver a funcionalidade Escritas Aceleradas, altere o
hbase.rootdir
caminho para apontar para o nome do contentor do cluster de origem original. Por exemplo, o seguinte caminho deve ser alterado parahbase-upgrade-old-2021-03-22
. Se o cluster não tiver Escritas Aceleradas, ignore este passo.Limpe os dados do Zookeeper no cluster de destino ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper:
hbase zkcli rmr /hbase-unsecure quit
Limpar e migrar WAL
Execute os seguintes comandos, consoante a versão do HDI de origem e se os clusters de origem e de destino têm Escritas Aceleradas.
- O cluster de destino é sempre a versão HDI 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
.
Nota
- O para o
<source-container-fullpath>
tipo de armazenamento WASB éwasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net
. - O
<source-container-fullpath>
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 Escritas Aceleradas e o cluster de destino tem Escritas Aceleradas.
- O cluster de origem é HDI 3.6 sem Escritas Aceleradas e o cluster de destino tem Escritas Aceleradas.
- O cluster de origem é HDI 3.6 sem Escritas Aceleradas e o cluster de destino não tem Escritas Aceleradas.
- O cluster de origem é HDI 4.0 com Escritas Aceleradas e o cluster de destino tem Escritas Aceleradas.
- O cluster de origem é HDI 4.0 sem Escritas Aceleradas e o cluster de destino tem Escritas Aceleradas.
- O cluster de origem é HDI 4.0 sem Escritas Aceleradas e o cluster de destino não tem Escritas Aceleradas.
O cluster de origem é HDI 3.6 ou HDI 4.0 com Escritas Aceleradas e o cluster de destino tem Escritas 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 ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper 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 Escritas Aceleradas e o cluster de destino tem Escritas 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 ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper 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 Escritas Aceleradas e o cluster de destino não tem Escritas 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 Escritas Aceleradas e o cluster de destino tem Escritas 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 ao executar os seguintes comandos em qualquer nó ou nó de trabalho do Zookeeper 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 Escritas Aceleradas e o cluster de destino não tem Escritas 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
Com o contexto de
sudo -u hdfs
utilizador, copie a pasta/hdp/apps/<new-version-name>
e os respetivos conteúdos da<destination-container-fullpath>
pasta para a/hdp/apps
pasta em<source-container-fullpath>
. Pode copiar a pasta ao executar 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, guarde as alterações e reinicie todos os serviços necessários, como indica o Ambari.
Aponte a aplicação para o cluster de destino.
Nota
O nome DNS estático da sua aplicação é alterado quando atualiza. Em vez de codificar este nome DNS, pode configurar um CNAME nas definições 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 reimplementar.
Inicie a ingestão.
Verifique a consistência do HBase e as operações DDL (Data Definition Language) simples e Linguagem de Manipulação de Dados (DML).
Se o cluster de destino for satisfatório, elimine o cluster de origem.
Migrar o HBase com scripts
Execute o script migrate-hbase-source.sh no cluster de origem e migrate-hbase-dest.sh no cluster de destino. Utilize as seguintes instruções para executar estes scripts.
Nota
Estes scripts não copiam as WALs antigas do HBase como parte da migração; Por conseguinte, os scripts não devem ser utilizados em clusters que tenham a Funcionalidade de Cópia de Segurança ou Replicação do HBase ativada.
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
Passos seguintes
Para saber mais sobre o Apache HBase e atualizar clusters do HDInsight, veja os seguintes artigos: