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

APLICA-SE A: Cassandra

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

Este tutorial abrange as seguintes tarefas:

  • Planear a migração
  • Pré-requisitos de migração
  • Migrar dados usando o cqlshCOPY comando
  • Migrar dados utilizando o Spark

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

Pré-requisitos de migração

  • Estimar suas necessidades de taxa de transferência: antes de migrar dados para a API da conta Cassandra no Azure Cosmos DB, você deve estimar as necessidades de taxa de transferência de sua carga de trabalho. Em geral, comece com a taxa de transferência média exigida pelas operações CRUD e, em seguida, inclua a taxa de transferência adicional necessária para a carga de transformação de extração ou operações espinhosas. Precisa dos seguintes detalhes para planear a migração:

    • Tamanho dos dados existentes ou o tamanho estimado dos dados: define o requisito de tamanho e débito de base de dados mínimos. Se você estiver estimando o tamanho dos dados para um novo aplicativo, poderá assumir que os dados estão uniformemente distribuídos pelas linhas e estimar o valor multiplicando pelo tamanho dos dados.

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

    • O esquema: Conecte-se ao cluster Cassandra existente através cqlshdo e exporte o esquema de Cassandra:

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

      Depois de identificar os requisitos de sua 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 cobrança de RU para uma operação: Você pode determinar os RUs usando qualquer um dos SDKs suportados pela API para Cassandra. Este exemplo mostra a versão do .NET dos encargos de obter 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}");
        }
      
  • Alocar o débito necessário: o Azure Cosmos DB pode dimensionar automaticamente o armazenamento e débito à medida que os requisitos aumentam. Pode calcular as necessidades de débito com a calculadora de unidades de pedido do Azure Cosmos DB.

  • Criar tabelas na API para a conta Cassandra: antes de começar a migrar dados, pré-crie todas as suas tabelas a partir do portal do Azure ou do cqlsh. Se você estiver migrando para uma conta do Azure Cosmos DB que tenha taxa de transferência no nível de banco de dados, certifique-se de fornecer uma chave de partição ao criar os contêineres.

  • Aumentar o débito: a duração da migração de dados depende da quantidade de débito que aprovisionou para as tabelas no Azure Cosmos DB. Aumente o débito durante o período de migração. Com o débito mais elevado, pode evitar limitações de velocidade e realizar a migração em menos tempo. Após concluir a migração, reduza o débito para reduzir os custos. Também recomendamos que você tenha a conta do Azure Cosmos DB na mesma região do banco de dados de origem.

  • Habilitar TLS: o Azure Cosmos DB tem requisitos e padrões de segurança rigorosos. Certifique-se de ativar o TLS quando interagir com sua conta. Quando você usa CQL com SSH, você tem uma opção para fornecer informações TLS.

Opções de migração de dados

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

Migrar dados usando o comando cqlsh COPY

Use o comando CQL COPY para copiar dados locais para a API da conta Cassandra no Azure Cosmos DB.

Aviso

Use apenas o CQL COPY para migrar pequenos conjuntos de dados. Para mover grandes conjuntos de dados, migre dados 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 csv (verifique se o cqlsh está conectado à tabela de origem usando as credenciais apropriadas):

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

    • Entre no portal do Azure e vá para sua conta do Azure Cosmos DB.

    • Abra o painel Cadeia de Conexão . Aqui você vê todas as informações que você precisa para se conectar à sua API para a conta Cassandra de cqlsh.

  3. Inicie sessão cqlsh utilizando as informações de ligação do portal.

  4. Use o CQLCOPY FROM comando para copiar data.csv (ainda localizado no diretório raiz do usuário onde cqlsh está instalado):

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

Nota

API para Cassandra suporta o protocolo versão 4, que veio com Cassandra 3.11. Pode haver problemas com o uso de versões posteriores do protocolo com nossa API. COPY FROM com versão de protocolo posterior pode entrar em um loop e retornar linhas duplicadas. Adicione a versão do protocolo ao comando cqlsh.

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 dá suporte a vários parâmetros para controlar a taxa de ingestão de documentos no Azure Cosmos DB.

A configuração padrão para o comando COPY tenta ingerir dados em um ritmo muito rápido e não leva em conta o comportamento de limitação de taxa do CosmosDB. Você deve reduzir o CHUNKSIZE ou INGESTRATE dependendo da taxa de transferência configurada na coleção.

Recomendamos a configuração abaixo (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
  • TENTATIVAS MÁXIMAS = 10
Comandos de exemplo
  • Copiando dados da API para Cassandra para o arquivo csv local
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • Copiando dados do arquivo csv local para a API para 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 Apache Cassandra do CQLSH COPY é suportada. Datastax Enterprise (DSE) versões do CQLSH podem encontrar erros.

Migrar dados utilizando o Spark

Use as seguintes etapas para migrar dados para a API da conta Cassandra com o Spark:

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

  2. Mova dados para a API de destino do ponto de extremidade Cassandra. Consulte este guia de instruções para migração com o Azure Databricks.

Migrar dados usando trabalhos do Spark é uma opção recomendada se você tiver dados residindo em um cluster existente em máquinas virtuais do Azure ou em qualquer outra nuvem. Para fazer isso, você deve configurar o Spark como intermediário para ingestão única ou regular. Você pode acelerar essa migração usando a conectividade do Azure ExpressRoute entre seu ambiente local e o Azure.

Migração em direto

Quando uma migração de tempo de inatividade zero de um cluster Apache Cassandra nativo é necessária, recomendamos configurar gravações duplas e uma carga de dados em massa separada para migrar dados históricos. Tornamos a implementação desse padrão mais simples, fornecendo um proxy de gravação dupla de código aberto para permitir alterações mínimas no código do aplicativo. Dê uma olhada em nosso artigo de instruções sobre migração ao vivo usando proxy de gravação dupla e Apache Spark para obter mais detalhes sobre a implementação desse padrão.

Clean up resources (Limpar recursos)

Quando eles não forem mais necessários, você poderá excluir o grupo de recursos, a conta do Azure Cosmos DB e todos os recursos relacionados. Para fazer isso, selecione o grupo de recursos para a máquina virtual, selecione Excluir e confirme o nome do grupo de recursos a ser excluído.

Próximos passos

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

Tunable data consistency levels in Azure Cosmos DB (Níveis de consistência de dados ajustáveis no Azure Cosmos DB)