

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Migrieren Sie Apache Cassandra-Workloads mithilfe von AWS Glue zu Amazon Keyspaces
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue"></a>

*Nikolai Kolesnikov, Karthiga Priya Chandran und Samir Patel, Amazon Web Services*

## Zusammenfassung
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-summary"></a>

Dieses Muster zeigt Ihnen, wie Sie Ihre vorhandenen Apache Cassandra-Workloads mithilfe CQLReplicator von AWS Glue zu Amazon Keyspaces (für Apache Cassandra) migrieren. Sie können CQLReplicator auf AWS Glue verwenden, um die Replikationsverzögerung bei der Migration Ihrer Workloads auf wenige Minuten zu reduzieren. Sie erfahren auch, wie Sie einen Amazon Simple Storage Service (Amazon S3) -Bucket verwenden, um Daten zu speichern, die für die Migration erforderlich sind, einschließlich [Apache Parquet-Dateien](https://parquet.apache.org/), Konfigurationsdateien und Skripts. Bei diesem Muster wird davon ausgegangen, dass Ihre Cassandra-Workloads auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances in einer Virtual Private Cloud (VPC) gehostet werden.

## Voraussetzungen und Einschränkungen
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-prereqs"></a>

**Voraussetzungen**
+ Cassandra-Cluster mit einer Quelltabelle
+ Zieltabelle in Amazon Keyspaces zur Replikation der Arbeitslast
+ S3-Bucket zum Speichern von Parquet-Zwischendateien, die inkrementelle Datenänderungen enthalten
+ S3-Bucket zum Speichern von Job-Konfigurationsdateien und Skripten

**Einschränkungen**
+ CQLReplicator auf AWS Glue benötigt einige Zeit, um Datenverarbeitungseinheiten (DPUs) für die Cassandra-Workloads bereitzustellen. Die Replikationsverzögerung zwischen dem Cassandra-Cluster und dem Zielschlüsselraum und der Zieltabelle in Amazon Keyspaces wird wahrscheinlich nur wenige Minuten andauern.

## Architektur
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-architecture"></a>

**Quelltechnologie-Stack**
+ Apache Cassandra
+ DataStax Server
+ ScyllaDB

**Zieltechnologie-Stack**
+ Amazon Keyspaces

**Migrationsarchitektur**

Das folgende Diagramm zeigt eine Beispielarchitektur, bei der ein Cassandra-Cluster auf EC2 Instanzen gehostet und auf drei Availability Zones verteilt ist. Die Cassandra-Knoten werden in privaten Subnetzen gehostet.

![\[Benutzerdefinierte Servicerolle, Amazon Keyspaces und Amazon S3, wobei AWS Glue eine Verbindung zu den Knoten VPC herstellt.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)


Das Diagramm zeigt den folgenden Workflow:

1. Eine benutzerdefinierte Servicerolle bietet Zugriff auf Amazon Keyspaces und den S3-Bucket.

1. Ein AWS Glue Glue-Job liest die Jobkonfiguration und die Skripts im S3-Bucket.

1. Der AWS Glue Glue-Job stellt über Port 9042 eine Verbindung her, um Daten aus dem Cassandra-Cluster zu lesen.

1. Der AWS Glue Glue-Job stellt über Port 9142 eine Verbindung her, um Daten in Amazon Keyspaces zu schreiben.

## Tools
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-tools"></a>

**AWS-Services und -Tools**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) ist eine browserbasierte Shell, mit der Sie AWS-Services mithilfe der AWS-Befehlszeilenschnittstelle (AWS CLI) und einer Reihe vorinstallierter Entwicklungstools verwalten können.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) ist ein vollständig verwalteter ETL-Service, mit dem Sie Daten zuverlässig kategorisieren, bereinigen, anreichern und zwischen Datenspeichern und Datenströmen verschieben können.
+ [Amazon Keyspaces (für Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) ist ein verwalteter Datenbankservice, der Sie bei der Migration, Ausführung und Skalierung Ihrer Cassandra-Workloads in der AWS-Cloud unterstützt.

**Code**

Der Code für dieses Muster ist im Repository verfügbar. GitHub [CQLReplicator](https://github.com/aws-samples/cql-replicator/tree/main/glue)

## Best Practices
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-best-practices"></a>
+ Um die erforderlichen AWS Glue Glue-Ressourcen für die Migration zu ermitteln, schätzen Sie die Anzahl der Zeilen in der Cassandra-Quelltabelle. Zum Beispiel 250.000 Zeilen pro 0,25 DPU (2 VCPUs, 4 GB Arbeitsspeicher) mit 84 GB Festplatte.
+ Wärmen Sie Amazon Keyspaces-Tabellen vor der Ausführung vor. CQLReplicator Beispielsweise können acht CQLReplicator Kacheln (AWS Glue Glue-Jobs) bis zu 22 K WCUs pro Sekunde schreiben, sodass das Ziel auf 25-30 K WCUs pro Sekunde vorgewärmt werden sollte.
+ Um die Kommunikation zwischen AWS Glue Glue-Komponenten zu ermöglichen, verwenden Sie eine selbstreferenzierende Regel für eingehenden Datenverkehr für alle TCP-Ports in Ihrer Sicherheitsgruppe.
+ Verwenden Sie die Strategie für den inkrementellen Datenverkehr, um die Migrationslast im Laufe der Zeit zu verteilen.

## Epen
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-epics"></a>

### Bereitstellen CQLReplicator
<a name="deploy-cqlreplicator"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Zielschlüsselraum und eine Tabelle.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | App-Besitzer, AWS-Administrator, DBA, App-Entwickler | 
| Konfigurieren Sie den Cassandra-Treiber für die Verbindung mit Cassandra. | Verwenden Sie das folgende Konfigurationsskript:<pre>Datastax-java-driver {<br />  basic.request.consistency = "LOCAL_QUORUM"<br />  basic.contact-points = ["127.0.0.1:9042"]<br />   advanced.reconnect-on-init = true<br />   basic.load-balancing-policy {<br />        local-datacenter = "datacenter1"<br />}<br />advanced.auth-provider = {<br />       class = PlainTextAuthProvider<br />       username = "user-at-sample"<br />       password = "S@MPLE=PASSWORD="<br />}<br />}</pre>Das vorherige Skript verwendet den Spark Cassandra Connector. Weitere Informationen finden Sie in der Referenzkonfiguration für [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Konfigurieren Sie den Cassandra-Treiber für die Verbindung mit Amazon Keyspaces. | Verwenden Sie das folgende Konfigurationsskript:<pre>datastax-java-driver {<br />basic {<br />  load-balancing-policy {<br />    local-datacenter = us-west-2<br />        }<br />  contact-points = [<br />            "cassandra.us-west-2.amazonaws.com:9142"<br />        ]<br />  request {<br />  page-size = 2500<br />  timeout = 360 seconds<br />  consistency = LOCAL_QUORUM<br />        }<br />    }<br />advanced {<br /> control-connection {<br />  timeout = 360 seconds<br />        }<br /> session-leak.threshold = 6<br /> connection {<br /> connect-timeout = 360 seconds<br /> init-query-timeout = 360 seconds<br /> warn-on-init-error = false<br />        }<br /> auth-provider = {<br />  class = software.aws.mcs.auth.SigV4AuthProvider<br />  aws-region = us-west-2<br /> }<br /><br /> ssl-engine-factory {<br />  class = DefaultSslEngineFactory<br />        }<br />    }<br />}</pre>Das vorherige Skript verwendet den Spark Cassandra Connector. Weitere Informationen finden Sie in der Referenzkonfiguration für [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Erstellen Sie eine IAM-Rolle für den AWS Glue Glue-Job. | Erstellen Sie eine neue AWS-Servicerolle `glue-cassandra-migration` mit dem Namen AWS Glue als vertrauenswürdige Entität.Das `glue-cassandra-migration` sollte Lese- und Schreibzugriff auf den S3-Bucket und Amazon Keyspaces bieten. Der S3-Bucket enthält die .jar-Dateien, die Konfigurationsdateien für Amazon Keyspaces und Cassandra sowie die Parquet-Zwischendateien. Er enthält beispielsweise die verwalteten Richtlinien`AWSGlueServiceRole`,`AmazonS3FullAccess`, und`AmazonKeyspacesFullAccess`. | AWS DevOps | 
|  CQLReplicator In AWS herunterladen CloudShell. | Laden Sie das Projekt in Ihren Home-Ordner herunter, indem Sie den folgenden Befehl ausführen:<pre>git clone https://github.com/aws-samples/cql-replicator.git<br />cd cql-replicator/glue<br /># Only for AWS CloudShell, the bc package includes bc and dc. Bc is an arbitrary precision numeric processing arithmetic language<br />sudo yum install bc -y</pre> |  | 
| Ändern Sie die Referenzkonfigurationsdateien. | Kopieren `KeyspacesConnector.conf` Sie `CassandraConnector.conf` und in das `../glue/conf` Verzeichnis im Projektordner. | AWS DevOps | 
| Initiieren Sie den Migrationsprozess. | Der folgende Befehl initialisiert die CQLReplicator Umgebung. Die Initialisierung umfasst das Kopieren von .jar-Artefakten und das Erstellen eines AWS Glue Glue-Connectors, eines S3-Buckets, eines AWS Glue Glue-Jobs, des `migration` Schlüsselraums und der Tabelle: `ledger`<pre>cd cql-replicator/glue/bin<br />./cqlreplicator --state init --sg '"sg-1","sg-2"' \ <br />                --subnet "subnet-XXXXXXXXXXXX" \ <br />                --az us-west-2a --region us-west-2 \ <br />                --glue-iam-role glue-cassandra-migration \ <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2<br /></pre>Das Skript enthält die folgenden Parameter:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 
| Validieren Sie die Bereitstellung. | Nachdem Sie den vorherigen Befehl ausgeführt haben, sollte das AWS-Konto Folgendes enthalten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 

### Lauf CQLReplicator
<a name="run-cqlreplicator"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten Sie den Migrationsprozess. | Um mit CQLReplicator AWS Glue zu arbeiten, müssen Sie den `--state run` Befehl verwenden, gefolgt von einer Reihe von Parametern. Die genaue Konfiguration dieser Parameter wird in erster Linie von Ihren individuellen Migrationsanforderungen bestimmt. Diese Einstellungen können beispielsweise variieren, wenn Sie sich dafür entscheiden, TTL-Werte und Aktualisierungen (Time to Live) zu replizieren, oder wenn Sie Objekte, die 1 MB überschreiten, nach Amazon S3 auslagern.Führen Sie den folgenden Befehl aus, um die Arbeitslast vom Cassandra-Cluster nach Amazon Keyspaces zu replizieren: <pre>./cqlreplicator --state run --tiles 8  \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \ <br />                --region us-west-2 \                              <br />                --src-keyspace source_keyspace \ <br />                --src-table source_table \  <br />                --trg-keyspace taget_keyspace \<br />                --writetime-column column_name \<br />                --trg-table target_table --inc-traffic</pre>Ihr Quellschlüsselraum und Ihre Tabelle befinden sich `source_keyspace.source_table` im Cassandra-Cluster. Ihr Zielschlüsselraum und Ihre Zieltabelle befinden sich `target_keyspace.target_table` in Amazon Keyspaces. Der Parameter `--inc-traffic` verhindert, dass inkrementeller Verkehr den Cassandra-Cluster und Amazon Keyspaces mit einer hohen Anzahl von Anfragen überlastet.Um Updates zu replizieren, fügen Sie sie zu Ihrer Befehlszeile hinzu`--writetime-column regular_column_name`. Die reguläre Spalte wird als Quelle für den Schreibzeitstempel verwendet. | AWS DevOps | 

### Überwachen Sie den Migrationsprozess
<a name="monitor-the-migration-process"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Validieren Sie migrierte Cassandra-Zeilen während der historischen Migrationsphase. | Führen Sie den folgenden Befehl aus, um die Anzahl der Zeilen zu ermitteln, die während der Backfilling-Phase repliziert wurden:<pre>./cqlreplicator --state stats \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \  <br />                --src-keyspace source_keyspace --src-table source_table --region us-west-2</pre> | AWS DevOps | 

### Beenden Sie den Migrationsprozess
<a name="stop-the-migration-process"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Verwenden Sie den `cqlreplicator` Befehl oder die AWS Glue Glue-Konsole. | Führen Sie den folgenden Befehl aus, um den Migrationsprozess ordnungsgemäß zu beenden:<pre>./cqlreplicator --state request-stop --tiles 8 \                         <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \     <br />                --region us-west-2 \                     <br />                --src-keyspace source_keyspace --src-table source_table</pre>Verwenden Sie die AWS Glue Glue-Konsole, um den Migrationsprozess sofort zu beenden. | AWS DevOps | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die bereitgestellten Ressourcen. | Der folgende Befehl löscht den AWS Glue Glue-Job, den Connector, den S3-Bucket und die Keyspaces-Tabelle`ledger`:<pre>./cqlreplicator --state cleanup --landing-zone s3://cql-replicator-1234567890-us-west-2</pre> | AWS DevOps | 

## Fehlerbehebung
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| AWS Glue Glue-Jobs schlugen fehl und gaben einen OOM-Fehler (Out of Memory) zurück. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | 

## Zugehörige Ressourcen
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-resources"></a>
+ [CQLReplicator mit AWS Glue README.MD](https://github.com/aws-samples/cql-replicator/blob/main/glue/README.MD)
+ [AWS Glue Glue-Dokumentation](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Dokumentation zu Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html)
+ [Apache Cassandra](https://cassandra.apache.org/_/index.html)

## Zusätzliche Informationen
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-additional"></a>

**Überlegungen zur Migration**

Sie können AWS Glue verwenden, um Ihren Cassandra-Workload zu Amazon Keyspaces zu migrieren, während Ihre Cassandra-Quelldatenbanken während des Migrationsprozesses voll funktionsfähig bleiben. Nach Abschluss der Replikation können Sie wählen, ob Sie Ihre Anwendungen mit minimaler Replikationsverzögerung (weniger als Minuten) zwischen dem Cassandra-Cluster und Amazon Keyspaces auf Amazon Keyspaces übertragen möchten. Um die Datenkonsistenz aufrechtzuerhalten, können Sie auch eine ähnliche Pipeline verwenden, um die Daten von Amazon Keyspaces zurück in den Cassandra-Cluster zu replizieren.

**Schreiben Sie Berechnungen für Einheiten**

Stellen Sie sich als Beispiel vor, Sie beabsichtigen, innerhalb einer Stunde 500.000.000 mit einer Zeilengröße von 1 KiB zu schreiben. Die Gesamtzahl der Amazon Keyspaces-Schreibeinheiten (WCUs), die Sie benötigen, basiert auf dieser Berechnung:

`(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required`

69.444 WCUs pro Sekunde ist der Tarif für 1 Stunde, aber Sie könnten etwas mehr Aufwandspolster hinzufügen.  `69,444 * 1.10 = 76,388 WCUs`Hat zum Beispiel 10 Prozent Gemeinkosten.

**Erstellen Sie einen Schlüsselraum mithilfe von CQL**

Führen Sie die folgenden Befehle aus, um einen Schlüsselraum mithilfe von CQL zu erstellen:

```
CREATE KEYSPACE target_keyspace WITH replication = {'class': 'SingleRegionStrategy'}
CREATE TABLE target_keyspace.target_table ( userid uuid, level text, gameid int, description text, nickname text, zip text, email text, updatetime text, PRIMARY KEY (userid, level, gameid) ) WITH default_time_to_live = 0 AND CUSTOM_PROPERTIES = {'capacity_mode':{ 'throughput_mode':'PROVISIONED', 'write_capacity_units':76388, 'read_capacity_units':3612 }} AND CLUSTERING ORDER BY (level ASC, gameid ASC)
```