Replique do HBase para o Bigtable
A biblioteca de replicação do HBase do Cloud Bigtable é um componente do cliente do HBase do Cloud Bigtable de código aberto para Java. A biblioteca de replicação permite-lhe replicar dados de forma assíncrona de um cluster do HBase para uma instância do Bigtable através do serviço de replicação do HBase, para que possa realizar uma migração online do HBase para o Bigtable. Para rever o ficheiro README e o código-fonte, visite o repositório do GitHub.
Para a migração offline do HBase para o Bigtable, consulte o artigo Migre dados do HBase para o Bigtable offline.
Exemplos de utilização
- Migração online para o Bigtable: pode usar a biblioteca de replicação do HBase do Bigtable, juntamente com uma migração offline dos seus dados do HBase existentes, para migrar do HBase para o Bigtable com um tempo de inatividade quase nulo.
- Recuperação de dados: prepare-se para o inesperado replicando os seus dados do HBase para uma instância do Bigtable externa.
- Centralizar conjuntos de dados: use a biblioteca para replicar dados de clusters do HBase em várias localizações para uma única instância do Bigtable que processa automaticamente a replicação entre os respetivos clusters.
- Expandir a sua área de cobertura do HBase: replique para uma instância do Bigtable que tenha clusters em localizações além das suas localizações atuais do HBase.
Vista geral
A biblioteca de replicação do HBase do Bigtable expande o serviço de replicação do HBase base. Os dados escritos num cluster do HBase são replicados de forma assíncrona para uma instância do Bigtable da mesma forma que a replicação padrão do HBase copia os dados para outro cluster do HBase. A biblioteca usa o registo de escrita antecipada (WAL) do cluster HBase de origem para enviar as mutações para a instância do Bigtable.
Pode replicar um cluster HBase completo para o Bigtable ou replicar apenas tabelas ou famílias de colunas específicas. Por outras palavras, a replicação do HBase é ativada ao nível do cluster, da tabela ou da família de colunas.
A replicação do HBase para o Bigtable é eventualmente consistente.
Migre para o Bigtable
A biblioteca de replicação do Bigtable HBase permite-lhe migrar para o Bigtable sem pausar a sua aplicação.
A um nível elevado, os passos para a migração online do HBase para o Bigtable são os seguintes. Consulte o ficheiro README para mais detalhes.
- Antes de começar, siga os passos de configuração.
- Ative a replicação no cluster do HBase.
- Adicione um ponto final de replicação do Bigtable como um par.
- Desative o par do Bigtable. Isto faz com que as gravações no HBase a partir desse ponto sejam armazenadas em buffer no cluster do HBase.
- Assim que o armazenamento em buffer começar a capturar novas gravações, siga o guia de migração offline para migrar uma captura instantânea dos seus dados do HBase existentes.
- Quando a migração offline estiver concluída, reative o par do Bigtable para permitir que o buffer seja esvaziado e repita as gravações no Bigtable.
- Depois de o buffer ser esvaziado, reinicie a aplicação para enviar pedidos para o Bigtable.
Configure a biblioteca de replicação
Antes de poder usar a replicação do Bigtable HBase, tem de concluir as tarefas nesta secção.
Configure a autenticação
Para garantir que a biblioteca de replicação tem autorização para escrever no Bigtable, siga os passos em Criar uma conta de serviço. Atribua a função roles/bigtable.user à conta de serviço recém-criada.
Em seguida, adicione o seguinte ao ficheiro hbase-site.xml
em todo o cluster do HBase.
<property>
<name>google.bigtable.auth.json.keyfile</name>
<value>JSON_FILE_PATH</value>
<description>
Service account JSON file to connect to Cloud Bigtable
</description>
</property>
Substitua JSON_FILE_PATH
pelo caminho para o ficheiro JSON que
transferiu.
Para ver propriedades adicionais que pode definir, consulte o artigo HBaseToCloudBigtableReplicationConfiguration.
Crie uma instância e tabelas de destino
Antes de poder replicar do HBase para o Bigtable, crie uma instância do Bigtable. Uma instância do Bigtable pode ter um ou vários clusters que funcionam de forma multiprimária. Os pedidos do serviço de replicação do HBase são encaminhados para o cluster mais próximo na instância do Bigtable e, em seguida, replicados para os outros clusters na instância.
A tabela de destino do Bigtable tem de ter o mesmo nome e as mesmas famílias de colunas que a tabela do HBase. Para obter instruções passo a passo sobre como usar a ferramenta de tradução de esquemas do Bigtable para criar uma tabela com o mesmo esquema da sua tabela HBase, consulte o artigo Migre dados do HBase para o Bigtable offline. Embora esteja a replicar, em vez de importar os dados, os passos são os mesmos.
Defina as propriedades de configuração
Adicione o seguinte ao seu hbase-site.xml
em todo o cluster HBase.
<property>
<name>google.bigtable.project.id</name>
<value>PROJECT_ID</value>
<description>
Bigtable project ID
</description>
</property>
<property>
<name>google.bigtable.instance.id</name>
<value>INSTANCE_ID</value>
<description>
Bigtable instance ID
</description>
</property>
<property>
<name>google.bigtable.app_profile.id</name>
<value>APP_PROFILE_ID</value>
<description>
Bigtable app profile ID
</description>
</property>
Substitua o seguinte:
PROJECT_ID
: o projeto Google Cloud no qual a sua instância do Bigtable se encontra.INSTANCE_ID
: o ID da instância do Bigtable para a qual está a replicar os seus dados.APP_PROFILE_ID
: o ID do perfil da app a usar para se ligar ao Bigtable.
Instale a biblioteca de replicação
Para usar a biblioteca de replicação do Bigtable HBase, tem de a instalar em todos os servidores no cluster do HBase. Use a versão da biblioteca de replicação que corresponde à sua versão do HBase (1.x ou 2.x).
Transfira o JAR
Para obter a biblioteca de replicação, execute o seguinte no shell do HBase.
wget BIGTABLE_HBASE_REPLICATION_URL
Substitua BIGTABLE_HBASE_REPLICATION_URL
pelo URL do JAR mais recente com dependências disponíveis no repositório Maven da biblioteca de replicação. O nome do ficheiro é semelhante a
https://repo1.maven.org/maven2/com/google/cloud/bigtable/bigtable-hbase-1.x-replication/1.0.0/bigtable-hbase-1.x-replication-1.0.0-jar-with-dependencies.jar
.
Para encontrar o URL ou transferir manualmente o JAR, faça o seguinte.
- Aceda ao repositório da biblioteca de replicação para a versão do HBase que está a usar.
- Clique no número da versão mais recente, como
1.0.0
. - Identifique o ficheiro jar-with-dependencies (normalmente, na parte superior).
- Clique com o botão direito do rato e copie o URL ou clique para transferir o ficheiro.
Instale o JAR
Em todos os servidores HBase, incluindo os servidores principais e de regiões, copie o ficheiro que acabou de transferir para uma pasta no caminho de classe do HBase. Por exemplo,
pode copiar o ficheiro para /usr/lib/hbase/lib/
.
Adicione um par do Bigtable
Para replicar do HBase para o Bigtable, tem de adicionar um ponto final do Bigtable como um par de replicação.
- Reinicie os servidores HBase para garantir que a biblioteca de replicação é carregada.
- Execute o seguinte no shell do HBase.
add_peer "PEER_ID_NUMBER", ENDPOINT_CLASSNAME =>
'com.google.cloud.bigtable.hbaseHBASE_VERSION_NUMBER_x.replication.HbaseToCloudBigtableReplicationEndpoint'
Substitua o seguinte:
PEER_ID_NUMBER
: um ID inteiro para o par de replicação do Bigtable. Para ativar a replicação do HBase apenas para tabelas selecionadas, use umadd_peer
parâmetro opcional.HBASE_VERSION_NUMBER
: o número da versão do HBase que está a usar. Use1
para o HBase 1.x e2
para o HBase 2.x. (O HBase 3.x não é suportado.)
Ative a replicação de tabelas
Depois de adicionar o par do Bigtable, ative a replicação de tabelas executando o seguinte comando na shell do HBase para cada tabela que quer replicar para o Bigtable:
enable_table_replication TABLE_NAME
Substitua TABLE_NAME
pelo nome da tabela a replicar.
O que se segue?
- Reveja uma vista geral do modelo de armazenamento, da arquitetura e das funcionalidades do Bigtable.
- Saiba algumas das diferenças entre o HBase e o Bigtable.