Självstudie: Migrera dina data till ett API för Cassandra-konto

GÄLLER FÖR: Cassandra

Som utvecklare kan du ha befintliga Cassandra-arbetsbelastningar som körs lokalt eller i molnet och du kan vilja migrera dem till Azure. Du kan migrera sådana arbetsbelastningar till ett API för Cassandra-konto i Azure Cosmos DB. Den här självstudien innehåller instruktioner om olika alternativ som är tillgängliga för att migrera Apache Cassandra-data till API:et för Cassandra-kontot i Azure Cosmos DB.

Den här självstudien omfattar följande uppgifter:

  • Planera en migrering
  • Krav för migrering
  • Migrera data med hjälp cqlshCOPY av kommandot
  • Migrera data med Spark

Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Krav för migrering

  • Beräkna dina dataflödesbehov: Innan du migrerar data till API:et för Cassandra-kontot i Azure Cosmos DB bör du uppskatta dataflödesbehoven för din arbetsbelastning. I allmänhet börjar du med det genomsnittliga dataflöde som krävs av CRUD-åtgärderna och inkluderar sedan det ytterligare dataflöde som krävs för extrahering av transformeringsbelastning eller spikiga åtgärder. Du behöver följande information för att planera för migreringen:

    • Befintlig datastorlek eller beräknad datastorlek: Definierar den minsta databasstorleken och det minsta dataflödet som krävs. Om du beräknar datastorleken för ett nytt program kan du anta att data är jämnt fördelade över raderna och beräkna värdet genom att multiplicera med datastorleken.

    • Obligatoriskt dataflöde: Ungefärlig dataflödeshastighet för läsåtgärder (fråga/hämta) och skrivåtgärder (uppdatera/ta bort/infoga). Det här värdet krävs för att beräkna nödvändiga enheter för begäran, tillsammans med datastorleken för stabilt tillstånd.

    • Schemat: Anslut till ditt befintliga Cassandra-kluster via cqlshoch exportera schemat från Cassandra:

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

      När du har identifierat kraven för din befintliga arbetsbelastning skapar du ett Azure Cosmos DB-konto, en databas och containrar enligt kraven för insamlat dataflöde.

    • Fastställa RU-avgiften för en åtgärd: Du kan fastställa ru:erna med någon av de SDK:er som stöds av API:et för Cassandra. I det här exemplet används .NET-versionen för att hämta RU-kostnaden.

      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}");
        }
      
  • Allokera det nödvändiga dataflödet: Azure Cosmos DB kan automatiskt skala lagringen och dataflödet allteftersom dina behov ökar. Du kan beräkna dataflödesbehovet med hjälp av RU-kalkylatorn för Azure Cosmos DB.

  • Skapa tabeller i API:et för Cassandra-kontot: Innan du börjar migrera data skapar du alla tabeller i förväg från Azure-portalen eller från cqlsh. Om du migrerar till ett Azure Cosmos DB-konto som har dataflöde på databasnivå måste du ange en partitionsnyckel när du skapar containrarna.

  • Öka dataflödet: Hur lång tid datamigreringen tar beror på hur stort dataflöde du etablerade för tabellerna i Azure Cosmos DB. Öka dataflödet under migreringen. Med ett högre dataflöde kan du undvika begränsningar och migrera snabbare. När du har slutfört migreringen minskar du dataflödet för att spara kostnader. Vi rekommenderar också att du har Azure Cosmos DB-kontot i samma region som källdatabasen.

  • Aktivera TLS: Azure Cosmos DB har strikta säkerhetskrav och standarder. Se till att aktivera TLS när du interagerar med ditt konto. När du använder CQL med SSH kan du ange TLS-information.

Alternativ för att migrera data

Du kan flytta data från befintliga Cassandra-arbetsbelastningar till Azure Cosmos DB med hjälp cqlshCOPY av kommandot eller med hjälp av Spark.

Migrera data med hjälp av kommandot cqlsh COPY

Använd kommandot CQL COPY för att kopiera lokala data till API:et för Cassandra-kontot i Azure Cosmos DB.

Varning

Använd endast CQL COPY för att migrera små datamängder. Om du vill flytta stora datamängder migrerar du data med hjälp av Spark.

  1. För att vara säker på att csv-filen innehåller rätt filstruktur använder du COPY TO kommandot för att exportera data direkt från cassandra-källtabellen till en csv-fil (se till att cqlsh är ansluten till källtabellen med lämpliga autentiseringsuppgifter):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Hämta nu api:et för Cassandra-kontots anslutningssträng information:

    • Logga in på Azure-portalen och gå till ditt Azure Cosmos DB-konto.

    • Öppna fönstret Anslut ionSträng. Här ser du all information som du behöver för att ansluta till ditt API för Cassandra-kontot från cqlsh.

  3. Logga in på cqlsh med hjälp av anslutningsinformationen från portalen.

  4. CQLCOPY FROM Använd kommandot för att kopiera data.csv (finns fortfarande i användarens rotkatalog där cqlsh är installerad):

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

Kommentar

API för Cassandra stöder protokollversion 4, som levererades med Cassandra 3.11. Det kan finnas problem med att använda senare protokollversioner med vårt API. KOPIERA FRÅN med senare protokollversion kan gå in i en loop och returnera dubbletter av rader. Lägg till protokollversionen i kommandot cqlsh.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Lägg till alternativ för dataflödesbegränsning i kommandot CQL Copy

COPY-kommandot i cqlsh stöder olika parametrar för att styra inmatningshastigheten för dokument i Azure Cosmos DB.

Standardkonfigurationen för COPY-kommandot försöker mata in data i mycket snabb takt och tar inte hänsyn till cosmosDB:s hastighetsbegränsning. Du bör minska CHUNKSIZE eller INGESTRATE beroende på det dataflöde som konfigurerats för samlingen.

Vi rekommenderar konfigurationen nedan (minst) för en samling på 20 000 RU:er om dokumentet eller poststorleken är 1 KB.

  • CHUNKSIZE = 100
  • INMATNING = 500
  • MAXATTEMPTS = 10
Exempelkommandon
  • Kopiera data från API för Cassandra till en lokal csv-fil
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • Kopiera data från en lokal csv-fil till API för Cassandra
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;

Viktigt!

Endast Apache Cassandra-versionen med öppen källkod av CQLSH COPY stöds. Datastax Enterprise-versioner (DSE) av CQLSH kan stöta på fel.

Migrera data med Spark

Använd följande steg för att migrera data till API:et för Cassandra-kontot med Spark:

  1. Etablera ett Azure Databricks-kluster eller ett Azure HDInsight-kluster.

  2. Flytta data till mål-API:et för Cassandra-slutpunkten. Se den här guiden för migrering med Azure Databricks.

Vi rekommenderar att du migrerar data med hjälp av Spark-jobb om du har data som finns i ett befintligt kluster på virtuella Azure-datorer eller i ett annat moln. För att göra detta måste du konfigurera Spark som mellanhand för engångsinmatning eller regelbunden inmatning. Du kan påskynda migreringen med hjälp av Azure ExpressRoute-anslutningen mellan din lokala miljö och Azure.

Direktmigrering

Om det krävs en nollavbrottsmigrering från ett inbyggt Apache Cassandra-kluster rekommenderar vi att du konfigurerar dubbla skrivningar och en separat massdatabelastning för att migrera historiska data. Vi har gjort det enklare att implementera det här mönstret genom att tillhandahålla en proxy med dubbel skrivning med öppen källkod för att möjliggöra minimala ändringar i programkoden. Ta en titt på vår instruktioner-artikel om direktmigrering med dubbelskrivningsproxy och Apache Spark för mer information om hur du implementerar det här mönstret.

Rensa resurser

När de inte längre behövs kan du ta bort resursgruppen, Azure Cosmos DB-kontot och alla relaterade resurser. Om du vill göra detta väljer du resursgruppen för den virtuella datorn. Välj sedan Ta bort och kontrollera namnet på resursgruppen som du vill ta bort.

Nästa steg

I den här självstudien har du lärt dig hur du migrerar dina data till ett API för Cassandra-konto i Azure Cosmos DB. Nu kan du lära dig mer om andra begrepp i Azure Cosmos DB: