Compartilhar via


Tutorial: Migrar seus dados para uma conta da API para Cassandra

APLICA-SE A: Cassandra

Como desenvolvedor, você pode ter cargas de trabalho do Cassandra existentes que estão em execução local ou na nuvem. Talvez você queira migrá-los para o Azure. Você pode migrar essas cargas de trabalho para uma conta da API para Cassandra no Azure Cosmos DB. Este tutorial fornece instruções sobre diferentes opções disponíveis para migrar dados do Apache Cassandra para a conta da API para Cassandra no Azure Cosmos DB.

Este tutorial cobre as seguintes tarefas:

  • Planeje a migração.
  • Atenda aos pré-requisitos de migração.
  • Migre dados usando o cqlshCOPY comando.
  • Migrar dados usando o Spark.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos para migração

  • Estimar suas necessidades de taxa de transferência: Antes de migrar dados para a conta da API para Cassandra no Azure Cosmos DB, calcule as necessidades de taxa de transferência da carga de trabalho. Em geral, comece com a taxa de transferência média exigida pelas operações CRUD (criar, ler, atualizar e excluir). Em seguida, inclua a taxa de transferência extra necessária para as operações de ETL (extração, transformação e carregamento) ou para as operações com picos. Você precisa dos seguintes detalhes para planejar a migração:

    • Tamanho de dados existente ou tamanho de dados estimado: Define o tamanho mínimo do banco de dados e o requisito de taxa de transferência. Se você estimar o tamanho dos dados de um novo aplicativo, poderá supor que os dados sejam distribuídos uniformemente entre as linhas. Você pode estimar o valor multiplicando pelo tamanho dos dados.

    • Taxa de transferência exigida: taxa de transferência aproximada das operações de leitura (consulta/obtenção) e gravação (atualização/exclusão/inserção). Esse valor é necessário para calcular as unidades de solicitação exigidas, juntamente com o tamanho dos dados em estado estável.

    • O esquema: conecte-se ao cluster do Cassandra existente por meio de cqlsh e exporte o esquema do Cassandra:

      cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
      

      Depois de identificar os requisitos da carga de trabalho existente, crie uma conta, um banco de dados e contêineres do Azure Cosmos DB de acordo com os requisitos de taxa de transferência coletados.

    • Determine a carga de unidade de solicitação (RU) para uma operação: Você pode determinar a RU usando qualquer um dos SDKs suportados pela API para Cassandra. Este exemplo mostra a versão do .NET da obtenção de custos de RU.

      var tableInsertStatement = table.Insert(sampleEntity);
      var insertResult = await tableInsertStatement.ExecuteAsync();
      
      foreach (string key in insertResult.Info.IncomingPayload)
        {
           byte[] valueInBytes = customPayload[key];
           double value = Encoding.UTF8.GetString(valueInBytes);
           Console.WriteLine($"CustomPayload:  {key}: {value}");
        }
      
  • Aloque a taxa de transferência necessária: o Azure Cosmos DB pode dimensionar automaticamente o armazenamento e a taxa de transferência conforme seus requisitos aumentam. Você pode estimar suas necessidades de taxa de transferência usando a calculadora de RU do Azure Cosmos DB.

  • Crie tabelas na API da conta Cassandra: Antes de iniciar a migração de dados, pré-crie todas as suas tabelas a partir do portal do Azure ou de cqlsh. Se você estiver migrando para uma conta do Azure Cosmos DB que tenha taxa de transferência no nível do banco de dados, forneça uma chave de partição ao criar os contêineres.

  • Aumentar a taxa de transferência: a duração da migração de dados depende da quantidade de taxa de transferência provisionada para as tabelas no Azure Cosmos DB. Aumente o desempenho durante a migração. Com uma taxa de transferência mais alta, você pode evitar a limitação de velocidade e migrar mais rapidamente. Depois de concluir a migração, diminua a taxa de transferência para economizar custos. Também é recomendável que você tenha a conta do Azure Cosmos DB na mesma região que o seu banco de dados de origem.

  • Habilitar segurança da camada de transporte (TLS): O Azure Cosmos DB tem requisitos e padrões de segurança rigorosos. Habilite o TLS ao interagir com sua conta. Ao usar a Linguagem de Consulta do Cassandra (CQL) com o Secure Shell, você pode fornecer informações do TLS.

Opções para migrar dados

Você pode mover dados de cargas de trabalho existentes do Cassandra para o Azure Cosmos DB usando o cqlshCOPY comando ou usando o Spark.

Migrar dados usando o comando cqlsh COPY

Aviso

Use apenas o comando CQL COPY para migrar pequenos conjuntos de dados. Para mover grandes conjuntos de dados, migre-os usando o Spark.

  1. Para ter certeza de que seu arquivo .csv contém a estrutura de arquivo correta, use o COPY TO comando para exportar dados diretamente da tabela cassandra de origem para um arquivo de .csv. Certifique-se de que cqlsh encontra-se conectado à tabela de origem utilizando as credenciais apropriadas.

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Agora, obtenha a API para as informações de cadeia de conexão da conta do Cassandra:

    1. Entre no portal do Azure e acesse sua conta do Azure Cosmos DB.
    2. Abra o painel Cadeia de Conexão. Aqui você vê todas as informações necessárias para se conectar à conta da API do Cassandra por meio do cqlsh.
  3. cqlsh Entre usando as informações de conexão do portal do Azure.

  4. Use o comando CQL COPY FROM para copiar data.csv. Esse arquivo ainda está localizado no diretório raiz do usuário onde cqlsh está instalado.

    COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
    

Observação

A API para Cassandra dá suporte ao protocolo versão 4, que foi fornecido com o Cassandra 3.11. Pode haver problemas se você usar versões de protocolo posteriores com nossa API. Com uma versão de protocolo posterior, o COPY FROM comando pode entrar em um loop e retornar linhas duplicadas.

Adicione protocol-version ao cqlsh comando:

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4

Adicionar opções de limitação de taxa de transferência ao comando CQL COPY

O comando COPY no cqlsh suporta vários parâmetros para controlar a taxa de ingestão de documentos no Azure Cosmos DB.

A configuração padrão para o COPY comando tenta ingerir dados em um ritmo rápido. Ele não explica o comportamento de limitação de taxa do Azure Cosmos DB. Reduza CHUNKSIZE ou INGESTRATE dependendo da taxa de transferência configurada na coleção.

Recomendamos a seguinte configuração (no mínimo) para uma coleção de 20.000 RUs se o tamanho do documento ou registro for de 1 KB:

  • CHUNKSIZE = 100
  • INGESTRATE = 500
  • MAXATTEMPTS = 10
Comandos de exemplo
  • Copie dados da API do Cassandra para um arquivo de .csv local:

    COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
    
  • Copie dados de um arquivo de .csv local para a API do Cassandra:

    COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;
    

Importante

Apenas a versão de código aberto do Apache Cassandra de CQLSH COPY é suportada. As versões do Datastax Enterprise (DSE) de CQLSH podem apresentar erros.

Migrar dados usando o Spark

Para migrar dados para a API da conta Cassandra com Spark, siga estas etapas:

  1. Provisione um cluster do Azure Databricks ou um cluster do Azure HDInsight.

  2. Mova dados para o ponto de extremidade da API do Cassandra de destino. Para obter mais informações, consulte Migrar dados do Cassandra para uma conta do Azure Cosmos DB para Apache Cassandra.

Se você tiver dados que residem em um cluster existente em máquinas virtuais do Azure ou em qualquer outra nuvem, recomendamos que você use trabalhos do Spark para migrar os dados. Configure o Spark como um intermediário para ingestão única ou regular. Você pode acelerar essa migração usando a conectividade do Azure ExpressRoute entre o ambiente local e o Azure.

Migração ao vivo

Se for necessário realizar uma migração sem tempo de inatividade de um cluster nativo do Apache Cassandra, configure gravações duplas e uma carga de dados em massa separada para a migração de dados históricos. Implementar esse padrão é mais simples quando você usa um proxy de gravação dupla de software livre para permitir alterações mínimas no código do aplicativo. Para obter mais informações, consulte Migrar dados ao vivo do Apache Cassandra para o Azure Cosmos DB para Apache Cassandra.

Limpar os recursos

Quando os recursos não são mais necessários, você pode excluir o grupo de recursos, a conta do Azure Cosmos DB e todos os recursos relacionados. Para fazer isso, escolha o grupo de recursos da máquina virtual, escolha Excluir e, em seguida, confirme o nome do grupo de recursos que será excluído.

Próxima etapa

Neste tutorial, você aprendeu a migrar seus dados para uma conta da API para Cassandra no Azure Cosmos DB. Agora você pode aprender mais sobre outros conceitos no Azure Cosmos DB: