Replicar do HBase para o Bigtable

A biblioteca de replicação HBase do Cloud Bigtable é um componente do cliente HBase de código aberto do Cloud Bigtable para Java. A biblioteca de replicação permite replicar de maneira assíncrona os dados de um cluster HBase para uma instância do Bigtable usando o serviço de replicação HBase. Para ler o LEIAME e o código-fonte, acesse o repositório do GitHub.

Casos de uso

  • Migração on-line para o Bigtable: é possível usar a biblioteca de replicação do Bigtable HBase, em conjunto com uma migração off-line dos dados atuais do HBase, para migrar do HBase para o Bigtable quase sem tempo de inatividade.
  • Recuperação de dados: prepare-se para o inesperado replicando seus dados do HBase para uma instância do Bigtable fora do local.
  • Centralização de conjuntos de dados: use a biblioteca para replicar dados de clusters do HBase em vários locais para uma única instância do Bigtable que processa automaticamente a replicação entre os clusters.
  • Ampliar seu espaço do HBase: replique para uma instância do Bigtable que tenha clusters em locais além dos locais atuais do HBase.

Visão geral

A biblioteca de replicação do HBase do Bigtable estende o serviço base de replicação do HBase. Os dados gravados em um cluster do HBase são replicados de maneira assíncrona em uma instância do Bigtable da mesma maneira que a replicação padrão do HBase copia os dados para outro cluster do HBase. A biblioteca usa o registro de gravação antecipada (WAL) do cluster de origem do HBase para enviar as mutações à instância do Bigtable.

É possível replicar um cluster HBase inteiro para o Bigtable ou replicar somente tabelas ou grupos de colunas específicos. Em outras palavras, a replicação do HBase é ativada no nível do cluster, da tabela ou do grupo de colunas.

A replicação do HBase para o Bigtable tem consistência posterior.

imagem

Migrar para o Bigtable

A biblioteca de replicação HBase do Bigtable permite migrar para o Bigtable sem pausar o aplicativo.

Em geral, as etapas para a migração on-line do HBase para o Bigtable são as seguintes. Para mais detalhes, consulte o LEIAME.

  1. Antes de começar, siga as etapas de instalação e configuração.
  2. Ative a replicação no cluster do HBase.
  3. Adicione um endpoint de replicação do Bigtable como um peering.
  4. Desative o peering do Bigtable. Isso faz gravações no HBase a partir desse ponto no buffer do cluster.
  5. Quando o armazenamento em buffer começar a capturar novas gravações, siga o guia de migração off-line para migrar um snapshot dos seus dados existentes do HBase.
  6. Quando a migração off-line estiver concluída, reative o peering do Bigtable para que o buffer seja drenado e reproduza as gravações no Bigtable.
  7. Depois que o buffer for drenado, reinicie o aplicativo para enviar solicitações ao Bigtable.

Configurar a biblioteca de replicação

Antes de usar a replicação HBase do Bigtable, é necessário concluir as tarefas nesta seção.

Configurar a autenticação

Para garantir que a biblioteca de replicação tenha permissão para gravar no Bigtable, siga as etapas em Criar uma conta de serviço. Atribua o papel roles/bigtable.user à conta de serviço recém-criada.

Em seguida, adicione o seguinte ao seu arquivo hbase-site.xml em todo o cluster 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 arquivo JSON que você fez download.

Para outras propriedades que podem ser definidas, consulte HBaseToCloudBigtableReplicationConfiguration.

Criar uma instância e tabelas de destino

Antes de replicar do HBase para o Bigtable, crie uma instância do Bigtable. Uma instância do Bigtable pode ter um cluster ou vários clusters que operam de maneira multiprimária. As solicitações do serviço de replicação do HBase são roteadas para o cluster mais próximo na instância do Bigtable e replicadas para os outros clusters na instância.

A tabela de destino do Bigtable precisa ter o mesmo nome e grupos de colunas iguais aos da tabela do HBase. Para instruções passo a passo sobre como usar a ferramenta de tradução de esquema do Bigtable para criar uma tabela com o mesmo esquema da tabela do HBase, consulte Criar tabelas de destino. Mesmo que você esteja replicando, em vez de importar os dados, as etapas são as mesmas.

Definir 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:

  • PROJECT_ID: o projeto do Google Cloud em que a instância Bigtable está.
  • INSTANCE_ID: o ID da instância do Bigtable em que você está replicando os dados.
  • APP_PROFILE_ID: o ID do perfil de aplicativo a ser usado para se conectar ao Bigtable.

Instalar a biblioteca de replicação

Para usar a biblioteca de replicação do HBase do Bigtable, é necessário instalá-la em todos os servidores do cluster do HBase. Use a versão da biblioteca de replicação que corresponde à sua versão do HBase (1.x ou 2.x).

Fazer o download do JAR

Para conseguir 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 arquivo é 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 fazer o download manual do JAR, faça o seguinte.

  1. Acesse o repositório da biblioteca de replicação da versão do HBase que você está usando.
  2. Clique no número da versão mais recente, como 1.0.0.
  3. Identifique o arquivo jar-with-dependencies, geralmente na parte superior.
  4. Clique com o botão direito do mouse e copie o URL ou clique para fazer o download do arquivo.

Instalar o JAR

Em cada servidor HBase, incluindo os servidores mestre e regional, copie o arquivo que você acabou de transferir para uma pasta no classpath do HBase. Por exemplo, é possível copiar o arquivo para /usr/lib/hbase/lib/.

Adicionar um par do Bigtable

Para replicar do HBase para o Bigtable, é necessário adicionar um endpoint do Bigtable como par de replicação.

  1. Reinicie os servidores do HBase para garantir que a biblioteca de replicação seja carregada.
  2. Execute o seguinte comando no shell do HBase.
add_peer PEER_ID_NUMBER, ENDPOINT_CLASSNAME =>
'com.google.cloud.bigtable.hbaseHBASE_VERSION_NUMBER_x.replication.HbaseToCloudBigtableReplicationEndpoint`

Substitua:

  • PEER_ID_NUMBER: um ID inteiro para o par de replicação do Bigtable. Para ativar a replicação do HBase somente para determinadas tabelas, use um parâmetro opcional add_peer.

  • HBASE_VERSION_NUMBER: o número da versão do HBase que você está usando. Use 1 para HBase 1.x e 2 para HBase 2.x. O HBase 3.x não é compatível.

A seguir