Dela via


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

GÄLLER FÖR: Kassandra

Som utvecklare kan du ha befintliga Cassandra-arbetsbelastningar som körs lokalt eller i molnet. Du kanske vill 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 för migrering.
  • Uppfylla kraven för migrering.
  • Migrera data med hjälp av cqlshCOPY kommandot.
  • Migrera data med hjälp av Spark.

Om du inte har en Azure-prenumeration, skapa ett gratis 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 ska du beräkna dataflödesbehoven för din arbetsbelastning. I allmänhet börjar du med det genomsnittliga dataflöde som krävs för crud-åtgärderna (create, read, update och delete). Inkludera sedan det extra dataflöde som krävs för extrahering, transformering och inläsning (ETL) 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 uppskattar datastorleken för ett nytt program kan du anta att data är jämnt fördelade över raderna. Du kan 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äll RU-avgiften (request unit) för en åtgärd: Du kan fastställa RU:erna med vilken som helst 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 dina dataflödesbehov med hjälp av Azure Cosmos DB RU-kalkylatorn.

  • 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å anger du 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 högre dataflöde kan du undvika hastighetsbegränsning och migrera på kortare tid. 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 (Transport Layer Security): Azure Cosmos DB har strikta säkerhetskrav och standarder. Aktivera TLS när du interagerar med ditt konto. När du använder Cassandra Query Language (CQL) med Secure Shell 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

Varning

Använd endast CQL-kommandot 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 din .csv fil innehåller rätt filstruktur använder du kommandot för att exportera data direkt från cassandra-källtabellen COPY TO till en .csv fil. Se till att cqlsh är ansluten till källtabellen med hjälp av lämpliga autentiseringsuppgifter.

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

    1. Logga in på Azure Portal och gå till ditt Azure Cosmos DB-konto.
    2. Öppna fönstret Anslutningssträ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 Azure-portalen.

  4. Använd CQL-kommandot COPY FROM för att kopiera data.csv. Den här filen finns fortfarande i användarrotkatalogen där cqlsh den är installerad.

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

Kommentar

API:et för Cassandra stöder protokollversion 4, som levererades med Cassandra 3.11. Det kan uppstå problem om du använder senare protokollversioner med vårt API. Med en senare protokollversion COPY FROM kan kommandot gå in i en loop och returnera duplicerade rader.

Lägg till protocol-version i cqlsh kommandot:

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

Lägga till alternativ för dataflödesbegränsning i CQL COPY-kommandot

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

Standardkonfigurationen COPY för kommandot försöker mata in data i snabb takt. Den tar inte hänsyn till hastighetsbegränsningsbeteendet för Azure Cosmos DB. Minska CHUNKSIZE eller INGESTRATE beroende på det dataflöde som konfigurerats för samlingen.

Vi rekommenderar följande konfiguration (minst) för en samling vid 20 000 RU om dokument- eller poststorleken är 1 KB.

  • CHUNKSIZE = 100
  • INGESTRATE = 500
  • MAXATTEMPTS = 10
Exempelkommandon
  • Kopiera data från API:et 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:et 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 CQLSH COPY öppen källkod stöds. DSE-versioner (Datastax Enterprise) kan CQLSH stöta på fel.

Migrera data med Spark

Följ dessa 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. Mer information finns i Migrera data från Cassandra till ett Azure Cosmos DB för Apache Cassandra-konto.

Om du har data som finns i ett befintligt kluster på virtuella Azure-datorer eller något annat moln rekommenderar vi att du använder Spark-jobb för att migrera data. 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 du behöver en migrering utan avbrott från ett inbyggt Apache Cassandra-kluster rekommenderar vi att du konfigurerar dubbelskrivning och en separat massdatabelastning för att migrera historiska data. Det är enklare att implementera det här mönstret när du använder en proxy med dubbel skrivning med öppen källkod för att tillåta minimala ändringar i programkoden. Mer information finns i Direktmigrera data från Apache Cassandra till Azure Cosmos DB för Apache Cassandra.

Rensa resurser

När resurser 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: