Tutorial: Migrieren Ihrer Daten in ein API für Cassandra-Konto

GILT FÜR: Cassandra

Entwickler verfügen unter Umständen über lokal oder in der Cloud ausgeführte Cassandra-Workloads, die sie zu Azure migrieren möchten. Solche Workloads können in ein API für Cassandra-Konto in Azure Cosmos DB migriert werden. Dieses Tutorial enthält Informationen zu verschiedenen Optionen, die für die Migration von Apache Cassandra-Daten in das API für Cassandra-Konto in Azure Cosmos DB zur Verfügung stehen.

Dieses Tutorial enthält die folgenden Aufgaben:

  • Planen der Migration
  • Voraussetzungen für die Migration
  • Migrieren von Daten mithilfe des Befehls cqlshCOPY
  • Migrieren von Daten mithilfe von Spark

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Voraussetzungen für die Migration

  • Ermitteln des voraussichtlichen Durchsatzbedarfs: Ermitteln Sie den voraussichtlichen Durchsatzbedarf für Ihre Workload, bevor Sie Daten in das API für Cassandra-Konto in Azure Cosmos DB migrieren. Im Allgemeinen beginnen Sie mit dem für CRUD-Vorgänge erforderlichen durchschnittlichen Durchsatz. Fügen Sie später den zusätzlich für ETL (Extrahieren, Transformieren und Laden) oder für Vorgänge mit Lastspitzen erforderlichen Durchsatz hinzu. Sie benötigen die folgenden Details für die Planung der Migration:

    • Größe der vorhandenen Daten oder geschätzte Datengröße: Legen Sie die Mindestanforderungen für die Datenbankgröße und den Durchsatz fest. Wenn Sie die Datengröße für eine neue Anwendung schätzen, können Sie davon ausgehen, dass die Daten gleichmäßig über die Zeilen verteilt sind und den Wert durch Multiplizieren mit der Datengröße schätzen.

    • Erforderlicher Durchsatz: Geben Sie die ungefähre Durchsatzrate für Leseoperationen (Abfragen/Abrufen) und Schreiben (Aktualisieren/Löschen/Einfügen) an. Dieser Wert ist erforderlich, um die erforderlichen Anforderungseinheiten zusammen mit der Größe der Daten mit festem Zustand zu berechnen.

    • Das Schema: Stellen Sie über cqlsh eine Verbindung mit Ihrem Cassandra-Cluster her, und exportieren Sie das Schema aus Cassandra:

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

      Nachdem Sie die Anforderungen Ihrer Workload ermittelt haben, erstellen Sie anhand der gesammelten Durchsatzanforderungen ein Azure Cosmos DB-Konto, eine Datenbank und Container.

    • Bestimmen der RU-Gebühr für einen Vorgang: Sie können die RUs mithilfe eines der von der API für Cassandra unterstützten SDKs ermitteln. Dieses Beispiel zeigt die .NET-Version zum Abrufen von RU-Gebühren.

      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}");
        }
      
  • Zuordnen des erforderlichen Durchsatzes: Azure Cosmos DB kann Speicher und Durchsatz automatisch gemäß Ihren wachsenden Anforderungen skalieren. Sie können Ihre Durchsatzanforderungen mit dem Anforderungseinheitenrechner von Azure Cosmos DB schätzen.

  • Erstellen von Tabellen im API für Cassandra-Konto: Bevor Sie mit der Migration von Daten beginnen, erstellen Sie zunächst alle Ihre Tabellen im Azure-Portal oder mit cqlsh. Wenn Sie als Migrationsziel ein Azure Cosmos DB-Konto mit Durchsatz auf Datenbankebene verwenden, geben Sie beim Erstellen der Container einen Partitionsschlüssel an.

  • Erhöhung des Durchsatzes: Die Dauer der Datenmigration richtet sich nach der Durchsatzmenge, die Sie für Ihre Tabellen in Azure Cosmos DB bereitstellen. Erhöhen Sie den Durchsatz für die Dauer der Migration. Mit dem höheren Durchsatz können Sie eine Ratenbegrenzung vermeiden und Migrationen in kürzerer Zeit durchführen. Nachdem die Migration abgeschlossen ist, können Sie den Durchsatz wieder verringern, um Kosten zu sparen. Wir empfehlen außerdem, ein Azure Cosmos DB-Konto in derselben Region wie die Quelldatenbank zu verwenden.

  • Aktivieren von TLS: Für Azure Cosmos DB gelten strenge Sicherheitsanforderungen und -standards. Achten Sie darauf, TLS für die Interaktion mit Ihrem Konto zu aktivieren. Wenn Sie CQL mit SSH verwenden, können Sie TLS-Informationen bereitstellen.

Optionen zum Migrieren von Daten

Mithilfe der folgenden Optionen können Sie Daten mit dem Befehl cqlshCOPY oder mit Spark aus vorhandenen Cassandra-Workloads nach Azure Cosmos DB verschieben.

Migrieren von Daten mit dem cqlsh COPY-Befehl

Der Befehl CQL COPY wird verwendet, um lokale Daten in das API für Cassandra-Konto in Azure Cosmos DB zu kopieren.

Warnung

Verwenden Sie nur CQL COPY, um kleine Datasets zu migrieren. Zum Verschieben großer Datasets migrieren Sie die Daten mithilfe von Spark.

  1. Um sicher zu sein, dass Ihre CSV-Datei die richtige Dateistruktur enthält, verwenden Sie den Befehl COPY TO, um Daten direkt aus Ihrer Cassandra-Quelltabelle in eine CSV-Datei zu exportieren (stellen Sie sicher, dass cqlsh mit den entsprechenden Anmeldeinformationen mit der Quelltabelle verbunden ist):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Rufen Sie dann die Informationen zur Verbindungszeichenfolge für das API für Cassandra-Konto ab:

    • Melden Sie sich beim Azure-Portal an, und wechseln Sie zu Ihrem Azure Cosmos DB-Konto.

    • Öffnen Sie den Bereich Verbindungszeichenfolge. Hier finden Sie alle Informationen, die Sie benötigen, um Ihr API für Cassandra-Konto aus cqlsh zu verbinden.

  3. Melden Sie sich mit den Verbindungsinformationen aus dem Portal bei cqlsh an.

  4. Verwenden Sie den Befehl CQLCOPY FROM zum Kopieren von data.csv (befindet sich weiterhin im Stammverzeichnis des Benutzers, in dem cqlsh installiert ist):

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

Hinweis

Die API für Cassandra unterstützt Protokollversion 4, die im Lieferumfang von Cassandra 3.11 enthalten ist. Es kann zu Problemen kommen, wenn neuere Protokollversionen mit unserer API verwendet werden. COPY FROM kann bei neueren Protokollversionen in eine Schleife geraten und doppelte Zeilen zurückgeben. Fügen Sie dem cqlsh-Befehl die Protokollversion hinzu.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Hinzufügen von Optionen zur Begrenzung des Durchsatzes für den CQL-Befehl „Copy“

Der COPY-Befehl in cqlsh unterstützt verschiedene Parameter, um die Geschwindigkeit der Erfassung von Dokumenten in Azure Cosmos DB zu steuern.

Die Standardkonfiguration für den COPY-Befehl versucht, die Daten mit sehr hoher Geschwindigkeit zu erfassen und berücksichtigt dabei nicht das CosmosDB-Verhalten zur Ratenbegrenzung. Sie sollten abhängig vom konfigurierten Durchsatz der Sammlung die Werte für CHUNKSIZE oder INGESTRATE verringern.

Wir empfehlen (mindestens) die folgende Konfiguration für eine Sammlung mit 20.000 RUs, wenn die Dokument- oder Datensatzgröße 1 KB beträgt.

  • CHUNKSIZE = 100
  • INGESTRATE = 500
  • MAXATTEMPTS = 10
Beispielbefehle
  • Kopieren von Daten aus der API für Cassandra in eine lokale CSV-Datei
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • Kopieren von Daten aus einer lokalen CSV-Datei in die API für Cassandra
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;

Wichtig

Nur die Open-Source-Apache Cassandra-Version von CQLSH COPY wird unterstützt. Bei Datenstax Enterprise(DSE)-Versionen von CQLSH können Fehler auftreten.

Migrieren von Daten mithilfe von Spark

Führen Sie die folgenden Schritte aus, um Daten mithilfe von Spark in das API für Cassandra-Konto zu migrieren:

  1. Stellen Sie einen Azure Databricks-Cluster oder einen Azure HDInsight-Cluster bereit.

  2. Verschieben Sie Daten zum Zielendpunkt der API für Cassandra. Weitere Informationen finden Sie in dieser Schrittanleitung für die Migration mit Azure Databricks.

Das Migrieren von Daten mithilfe von Spark-Aufträgen empfiehlt sich, wenn sich Ihre Daten in einem vorhandenen Cluster auf virtuellen Azure-Computern oder in einer anderen Cloud befinden. Zu diesem Zweck müssen Sie Spark als Vermittler für die einmalige oder reguläre Erfassung einrichten. Sie können diese Migration mithilfe von Azure ExpressRoute-Verbindungen zwischen Ihrer lokalen Umgebung und Azure beschleunigen.

Livemigration

Wenn eine Migration von einem nativen Apache Cassandra-Cluster ohne Ausfallzeiten erfolgen muss, empfehlen wir die Konfiguration von dualen Schreibvorgängen und einer separaten Massendatenladefunktion, um Verlaufsdaten zu migrieren. Wir haben die Implementierung dieses Musters einfacher gemacht, indem wir einen Open-Source-Proxys für duales Schreiben bereitstellen, sodass nur minimale Änderungen am Anwendungscode nötig sind. Ausführlichere Informationen zur Implementierung dieses Musters finden Sie in unserem Anleitungsartikel zur Livemigration mit Proxy für duales Schreiben und Apache Spark.

Bereinigen von Ressourcen

Wenn Sie die Ressourcengruppe, das Azure Cosmos DB-Konto und die dazugehörigen Ressourcen nicht mehr benötigen, können Sie sie löschen. Wählen Sie dazu die Ressourcengruppe für den virtuellen Computer und anschließend Löschen aus, und bestätigen Sie den Namen der zu löschenden Ressourcengruppe.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie Sie Ihre Daten in ein API für Cassandra-Konto in Azure Cosmos DB migrieren. Nun können Sie sich noch weiter über andere Konzepten in Azure Cosmos DB informieren: