Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR:
Kassandra
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
cqlsh
COPY
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 ska du beräkna dataflödesbehoven för din arbetsbelastning. I allmänhet börjar du med det genomsnittliga dataflöde som krävs av CRUD-åtgärderna. Inkludera sedan den extra kapacitet som krävs för ETL-processer eller ojämna belastningar. 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 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
cqlsh
och 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 cqlsh
COPY
av kommandot eller med hjälp av Spark.
Migrera data med hjälp av kommandot cqlsh COPY
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.
För att vara säker på att csv-filen 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. Kontrollera att cqlsh är ansluten till källtabellen med lämpliga autentiseringsuppgifter.COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;
Hämta nu api:et för Cassandra-kontots anslutningssträng information:
Logga in på Azure Portal och gå till ditt Azure Cosmos DB-konto.
Ö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
.
Logga in på
cqlsh
med hjälp av anslutningsinformationen från Azure-portalen.CQL
COPY FROM
Använd kommandot för att kopieradata.csv
. Den här filen finns fortfarande i användarrotkatalogen därcqlsh
den ä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. Den tar inte hänsyn till hastighetsbegränsningsbeteendet för Cosmos DB. Du bör minska CHUNKSIZE eller INGESTRATE beroende på det dataflöde som konfigurerats för samlingen.
Vi rekommenderar följande konfiguration (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:
Etablera ett Azure Databricks-kluster eller ett Azure HDInsight-kluster.
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.
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. 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 driftstopp från ett inbyggt Apache Cassandra-kluster rekommenderar vi att du konfigurerar dubbel skrivning och en separat bulkdatainladdning för att migrera historiska data. Att implementera det här mönstret är enklare att använda en proxy med dubbel skrivning med öppen källkod för att möjliggöra 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 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: