Zelfstudie: Uw gegevens migreren naar een API voor Cassandra-account

VAN TOEPASSING OP: Cassandra

Als ontwikkelaar hebt u mogelijk bestaande Cassandra-workloads die on-premises worden uitgevoerd of in de cloud, die u mogelijk wilt migreren naar Azure. U kunt dergelijke workloads migreren naar een API voor Cassandra-account in Azure Cosmos DB. Deze zelfstudie bevat instructies over verschillende opties die beschikbaar zijn voor het migreren van Apache Cassandra-gegevens naar de API voor Cassandra-account in Azure Cosmos DB.

Deze zelfstudie bestaat uit de volgende taken:

  • Migratie plannen
  • Vereisten voor migratie
  • Gegevens migreren met behulp van de cqlshCOPY opdracht
  • Gegevens migreren met Spark

Als u nog geen abonnement op Azure hebt, maakt u een gratis account aan voordat u begint.

Vereisten voor migratie

  • Maak een schatting van uw doorvoerbehoeften: voordat u gegevens migreert naar de API voor Cassandra-account in Azure Cosmos DB, moet u de doorvoerbehoeften van uw workload schatten. Over het algemeen begint u met de gemiddelde doorvoer die is vereist voor de CRUD-bewerkingen en neemt u vervolgens de extra doorvoer op die is vereist voor de bewerkingen voor het extraheren van transformaties of spiky bewerkingen. U hebt de volgende gegevens nodig om de migratie te plannen:

    • Bestaande gegevensgrootte of een schatting van de gegevensgrootte: de minimale databasegrootte en de vereiste voor de doorvoer. Als u de gegevensgrootte voor een nieuwe toepassing schat, kunt u ervan uitgaan dat de gegevens gelijkmatig over de rijen worden verdeeld en de waarde schatten door te vermenigvuldigen met de gegevensgrootte.

    • Vereiste doorvoer: Geschatte doorvoersnelheid van leesbewerkingen (query/get) en schrijfbewerkingen (update/delete/insert). Deze waarde is vereist voor het berekenen van de vereiste aanvraageenheden, samen met de gegevensgrootte met een constante status.

    • Het schema: Verbinding maken naar uw bestaande Cassandra-cluster via cqlshen exporteer het schema uit Cassandra:

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

      Nadat u de vereisten van uw bestaande workload hebt geïdentificeerd, maakt u een Azure Cosmos DB-account, -database en -containers volgens de verzamelde doorvoervereisten.

    • Bepaal de RU-kosten voor een bewerking: u kunt de RU's bepalen met behulp van een van de SDK's die worden ondersteund door de API voor Cassandra. In dit voorbeeld ziet u de .NET-versie van het ophalen van RU-kosten.

      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}");
        }
      
  • Toewijzen van de vereiste doorvoer: Azure Cosmos DB kan opslag en doorvoer automatisch schalen als uw vereisten veranderen. U kunt uw doorvoer schatten met behulp van de calculator voor aanvraageenheden van Azure Cosmos DB.

  • Tabellen maken in de API voor Cassandra-account: voordat u begint met het migreren van gegevens, maakt u vooraf al uw tabellen vanuit Azure Portal of vanuit cqlsh. Als u migreert naar een Azure Cosmos DB-account met doorvoer op databaseniveau, moet u een partitiesleutel opgeven wanneer u de containers maakt.

  • Doorvoer verhogen: de duur van de gegevensmigratie is afhankelijk van de hoeveelheid doorvoer die u voor de tabellen hebt ingericht in Azure Cosmos DB. Verhoog de doorvoer voor de duur van de migratie. Met een hogere doorvoer voorkomt u frequentielimieten en kost migreren minder tijd. Nadat u de migratie hebt voltooid, verlaagt u de doorvoer om kosten te besparen. U wordt ook aangeraden het Azure Cosmos DB-account in dezelfde regio te hebben als uw brondatabase.

  • TLS inschakelen: Azure Cosmos DB heeft strikte beveiligingsvereisten en -standaarden. Schakel TLS in wanneer u uw account gebruikt. Wanneer u CQL gebruikt met SSH, hebt u een optie om TLS-gegevens op te geven.

Mogelijkheden voor migreren van gegevens

U kunt gegevens verplaatsen van bestaande Cassandra-workloads naar Azure Cosmos DB met behulp van de cqlshCOPY opdracht of met behulp van Spark.

Gegevens migreren met behulp van de opdracht cqlsh COPY

Gebruik de opdracht CQL COPY om lokale gegevens te kopiëren naar de API voor cassandra-account in Azure Cosmos DB.

Waarschuwing

Gebruik alleen de CQL COPY om kleine gegevenssets te migreren. Als u grote gegevenssets wilt verplaatsen, migreert u gegevens met behulp van Spark.

  1. Als u er zeker van wilt zijn dat uw CSV-bestand de juiste bestandsstructuur bevat, gebruikt u de COPY TO opdracht om gegevens rechtstreeks vanuit de Cassandra-brontabel te exporteren naar een CSV-bestand (zorg ervoor dat cqlsh is verbonden met de brontabel met behulp van de juiste referenties):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Haal nu uw API op voor de verbindingsreeks informatie van uw Cassandra-account:

    • Meld u aan bij Azure Portal en ga naar uw Azure Cosmos DB-account.

    • Open het deelvenster Verbindingsreeks. Hier ziet u alle informatie die u nodig hebt om verbinding te maken met uw API voor Cassandra-account van cqlsh.

  3. Meld u aan cqlsh met behulp van de verbindingsgegevens van de portal.

  4. Gebruik de CQLCOPY FROM opdracht om te kopiëren data.csv (zich nog steeds in de hoofdmap van de gebruiker bevindt waar cqlsh deze is geïnstalleerd):

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

Notitie

API voor Cassandra ondersteunt protocolversie 4, die is geleverd met Cassandra 3.11. Er kunnen problemen zijn met het gebruik van latere protocolversies met onze API. COPY FROM met latere protocolversie kan in een lus worden opgenomen en dubbele rijen retourneren. Voeg de protocolversie toe aan de opdracht cqlsh.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Opties voor doorvoerbeperking toevoegen aan de opdracht CQL Kopiëren

De opdracht COPY in cqlsh ondersteunt verschillende parameters voor het beheren van de snelheid van opname van documenten in Azure Cosmos DB.

De standaardconfiguratie voor de opdracht COPY probeert gegevens in zeer snel tempo op te nemen en houdt geen rekening met het snelheidsbeperkingsgedrag van CosmosDB. Verminder de CHUNKSIZE of INGESTRATE, afhankelijk van de doorvoer die is geconfigureerd voor de verzameling.

We raden de onderstaande configuratie (minimaal) aan voor een verzameling bij 20.000 RU's als het document of de recordgrootte 1 kB is.

  • CHUNKSIZE = 100
  • OPNAME = 500
  • MAXATTEMPTS = 10
Voorbeeldopdrachten
  • Gegevens kopiëren van API voor Cassandra naar een lokaal CSV-bestand
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • Gegevens kopiëren van een lokaal CSV-bestand naar de API voor Cassandra
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;

Belangrijk

Alleen de open source Apache Cassandra-versie van CQLSH COPY wordt ondersteund. DSE-versies (Datastax Enterprise) van CQLSH kunnen fouten tegenkomen.

Gegevens migreren met Spark

Gebruik de volgende stappen om gegevens te migreren naar de API voor cassandra-account met Spark:

  1. Richt een Azure Databricks-cluster of een Azure HDInsight-cluster in.

  2. Verplaats gegevens naar de doel-API voor het Cassandra-eindpunt. Raadpleeg deze handleiding voor migratie met Azure Databricks.

Het migreren van gegevens met behulp van Spark-taken wordt aanbevolen als er gegevens aanwezig zijn in een bestaand cluster op virtuele Azure-machines of in een andere cloud. Hiervoor moet u Spark instellen als intermediair voor eenmalige of regelmatige opname. U kunt deze migratie versnellen met behulp van Azure ExpressRoute-connectiviteit tussen uw on-premises omgeving en Azure.

Livemigratie

Wanneer een migratie zonder downtime van een systeemeigen Apache Cassandra-cluster is vereist, raden we u aan dubbele schrijfbewerkingen te configureren en een afzonderlijke bulkbelasting van gegevens om historische gegevens te migreren. We hebben het implementeren van dit patroon eenvoudiger gemaakt door een opensource-proxy voor dubbele schrijfbewerkingen te bieden om minimale wijzigingen in toepassingscode mogelijk te maken. Bekijk ons artikel over livemigratie met behulp van een proxy voor dubbele schrijfbewerkingen en Apache Spark voor meer informatie over het implementeren van dit patroon.

Resources opschonen

Wanneer ze niet meer nodig zijn, kunt u de resourcegroep, het Azure Cosmos DB-account en alle gerelateerde resources verwijderen. Als u deze wilt verwijderen, selecteert u de resourcegroep voor de virtuele machine en selecteert u Verwijderen. Vervolgens bevestigt u de naam van de resourcegroep die u wilt verwijderen.

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u uw gegevens migreert naar een API voor Cassandra-account in Azure Cosmos DB. U kunt nu meer informatie krijgen over andere concepten in Azure Cosmos DB: