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.
Erstellen Sie einen Migrationsplan für die Migration von Apache Cassandra zu Amazon Keyspaces
Für eine erfolgreiche Migration von Apache Cassandra zu Amazon Keyspaces empfehlen wir eine Überprüfung der geltenden Migrationskonzepte und Best Practices sowie einen Vergleich der verfügbaren Optionen.
In diesem Thema wird beschrieben, wie der Migrationsprozess funktioniert, indem mehrere wichtige Konzepte sowie die Ihnen zur Verfügung stehenden Tools und Techniken vorgestellt werden. Sie können die verschiedenen Migrationsstrategien evaluieren, um diejenige auszuwählen, die Ihren Anforderungen am besten entspricht.
Themen
Funktionale Kompatibilität
Beachten Sie vor der Migration sorgfältig die funktionalen Unterschiede zwischen Apache Cassandra und Amazon Keyspaces. Amazon Keyspaces unterstützt alle häufig verwendeten Cassandra-Datenebenenoperationen, z. B. das Erstellen von Schlüsselräumen und Tabellen, das Lesen von Daten und das Schreiben von Daten.
Es gibt jedoch einige Cassandra-APIs, die Amazon Keyspaces nicht unterstützt. Weitere Informationen zu unterstützten APIs finden Sie unter. Unterstützte Cassandra-APIs, Operationen, Funktionen und Datentypen Einen Überblick über alle funktionalen Unterschiede zwischen Amazon Keyspaces und Apache Cassandra finden Sie unter. Funktionale Unterschiede: Amazon Keyspaces im Vergleich zu Apache Cassandra
Um die von Ihnen verwendeten Cassandra-APIs und das Cassandra-Schema mit den unterstützten Funktionen in Amazon Keyspaces zu vergleichen, können Sie ein Kompatibilitätsskript ausführen, das im Amazon Keyspaces-Toolkit unter verfügbar ist. GitHub
Wie verwende ich das Kompatibilitätsskript
Laden Sie das Kompatibilitäts-Python-Skript von herunter GitHub
und verschieben Sie es an einen Ort, der Zugriff auf Ihren vorhandenen Apache Cassandra-Cluster hat. Das Kompatibilitätsskript verwendet ähnliche Parameter wie
CQLSH.--portGeben Sie die IP-Adresse--hostund den Port ein, über den Sie eine Verbindung herstellen und Abfragen an einen der Cassandra-Knoten in Ihrem Cluster ausführen.Wenn Ihr Cassandra-Cluster die Authentifizierung verwendet, müssen Sie auch und angeben
-username.-passwordUm das Kompatibilitätsskript auszuführen, können Sie den folgenden Befehl verwenden.python toolkit-compat-tool.py --hosthostname or IP-u "username" -p "password" --portnative transport port
Schätzen Sie die Preise für Amazon Keyspaces
Dieser Abschnitt bietet einen Überblick über die Informationen, die Sie aus Ihren Apache Cassandra-Tabellen abrufen müssen, um die geschätzten Kosten für Amazon Keyspaces zu berechnen. Jede Ihrer Tabellen benötigt unterschiedliche Datentypen, muss unterschiedliche CQL-Abfragen unterstützen und sorgt für einen bestimmten Datenverkehr. read/write
Wenn Sie Ihre Anforderungen auf der Grundlage von Tabellen berücksichtigen, entspricht dies den Ressourcenisolations- und Durchsatzkapazitätsmodi von Amazon Keyspaces auf Tabellenebene. read/write Mit Amazon Keyspaces können Sie read/write Kapazitäts- und automatische Skalierungsrichtlinien für Tabellen unabhängig voneinander definieren.
Wenn Sie die Tabellenanforderungen verstehen, können Sie Tabellen für die Migration auf der Grundlage von Funktionalität, Kosten und Migrationsaufwand priorisieren.
Erfassen Sie vor einer Migration die folgenden Messwerte der Cassandra-Tabelle. Diese Informationen helfen bei der Schätzung der Kosten Ihres Workloads auf Amazon Keyspaces.
Tabellenname — Der Name des vollqualifizierten Schlüsselraums und der Tabellenname.
Beschreibung — Eine Beschreibung der Tabelle, z. B. wie sie verwendet wird oder welche Art von Daten darin gespeichert sind.
Durchschnittliche Lesevorgänge pro Sekunde — Die durchschnittliche Anzahl der Lesevorgänge für die Tabelle auf Koordinatenebene über ein großes Zeitintervall.
Durchschnittliche Schreibvorgänge pro Sekunde — Die durchschnittliche Anzahl von Schreibvorgängen auf Koordinatenebene für die Tabelle über ein großes Zeitintervall.
Durchschnittliche Zeilengröße in Byte — Die durchschnittliche Zeilengröße in Byte.
Speichergröße in GB — Die unformatierte Speichergröße für eine Tabelle.
Aufschlüsselung der Lesekonsistenz — Der Prozentsatz der Lesevorgänge, bei denen die Endkonsistenz (
LOCAL_ONEoderONE) verwendet wird, im Vergleich zu starker Konsistenz (LOCAL_QUORUM).
Diese Tabelle zeigt ein Beispiel für die Informationen zu Ihren Tabellen, die Sie bei der Planung einer Migration zusammenstellen müssen.
| Name der Tabelle | Description | Durchschnittliche Lesevorgänge pro Sekunde | Durchschnittliche Schreibvorgänge pro Sekunde | Durchschnittliche Zeilengröße in Byte | Speichergröße in GB | Lesen Sie die Konsistenzübersicht |
|---|---|---|---|---|---|---|
|
mykeyspace.mytable |
Wird verwendet, um den Verlauf des Einkaufswagens zu speichern |
10.000 |
5,000 |
2.200 |
2.000 |
100% |
mykeyspace.mytable2 |
Wird verwendet, um die neuesten Profilinformationen zu speichern |
20 000 |
1.000 |
850 |
1.000 |
25% |
Wie sammelt man Tabellenkennzahlen
Dieser Abschnitt enthält schrittweise Anweisungen zum Erfassen der erforderlichen Tabellenmetriken aus Ihrem vorhandenen Cassandra-Cluster. Zu diesen Metriken gehören Zeilengröße, Tabellengröße und read/write Anfragen pro Sekunde (RPS). Sie ermöglichen es Ihnen, die Durchsatzkapazitätsanforderungen für eine Amazon Keyspaces-Tabelle zu beurteilen und die Preise abzuschätzen.
Wie erfasst man Tabellenmetriken in der Cassandra-Quelltabelle
Ermitteln Sie die Zeilengröße
Die Zeilengröße ist wichtig für die Bestimmung der Lese- und Schreibkapazitätsauslastung in Amazon Keyspaces. Das folgende Diagramm zeigt die typische Datenverteilung über einen Cassandra-Token-Bereich.
Sie können ein Sampler-Skript für die Zeilengröße verwenden, das auf verfügbar ist, GitHub
um die Zeilengrößenmetriken für jede Tabelle in Ihrem Cassandra-Cluster zu erfassen. Das Skript exportiert Tabellendaten aus Apache Cassandra, indem es die Mindest
cqlsh-awk, Maximal-, Durchschnitts- und Standardabweichung der Zeilengröße anhand eines konfigurierbaren Stichprobensatzes von Tabellendaten verwendet und berechnet. Der Zeilengrößen-Sampler übergibt die Argumente ancqlsh, sodass dieselben Parameter verwendet werden können, um eine Verbindung herzustellen und aus Ihrem Cassandra-Cluster zu lesen.Die folgende Aussage ist ein Beispiel dafür.
./row-size-sampler.sh10.22.33.449142 \\ -u "username" -p "password" --sslWeitere Informationen zur Berechnung der Zeilengröße in Amazon Keyspaces finden Sie unterSchätzen Sie die Zeilengröße in Amazon Keyspaces.
Ermitteln Sie die Tabellengröße
Mit Amazon Keyspaces müssen Sie keinen Speicherplatz im Voraus bereitstellen. Amazon Keyspaces überwacht kontinuierlich die fakturierbare Größe Ihrer Tabellen, um Ihre Speichergebühren zu ermitteln. Der Speicherplatz wird pro abgerechnet. GB-month Die Größe der Amazon Keyspaces-Tabelle basiert auf der Rohgröße (unkomprimiert) eines einzelnen Replikats.
Um die Tabellengröße in Amazon Keyspaces zu überwachen, können Sie die Metrik verwenden
BillableTableSizeInBytes, die für jede Tabelle in der angezeigt wird. AWS-ManagementkonsoleUm die fakturierbare Größe Ihrer Amazon Keyspaces-Tabelle abzuschätzen, können Sie eine der beiden Methoden verwenden:
Verwenden Sie die durchschnittliche Zeilengröße und multiplizieren Sie sie mit der Anzahl der Zeilen.
Sie können die Größe der Amazon Keyspaces-Tabelle schätzen, indem Sie die durchschnittliche Zeilengröße mit der Anzahl der Zeilen aus Ihrer Cassandra-Quelltabelle multiplizieren. Verwenden Sie das Beispielskript für die Zeilengröße aus dem vorherigen Abschnitt, um die durchschnittliche Zeilengröße zu erfassen. Um die Zeilenanzahl zu erfassen, können Sie Tools verwenden,
dsbulk countum beispielsweise die Gesamtzahl der Zeilen in Ihrer Quelltabelle zu ermitteln.Verwenden Sie das
nodetool, um Tabellenmetadaten zu sammeln.Nodetoolist ein in der Apache Cassandra-Distribution bereitgestelltes Verwaltungstool, das Einblick in den Status des Cassandra-Prozesses bietet und Tabellenmetadaten zurückgibt. Sie könnennodetooles verwenden, um Metadaten über die Tabellengröße abzufragen und damit die Tabellengröße in Amazon Keyspaces zu extrapolieren.Der zu verwendende Befehl lautet.
nodetool tablestatsTablestats gibt die Größe und das Komprimierungsverhältnis der Tabelle zurück. Die Größe der Tabelle wird alstablelivespacefür die Tabelle gespeichert und Sie können sie durch diecompression ratiodividieren. Multiplizieren Sie dann diesen Größenwert mit der Anzahl der Knoten. Dividieren Sie schließlich durch den Replikationsfaktor (normalerweise drei).Dies ist die vollständige Formel für die Berechnung, anhand derer Sie die Tabellengröße beurteilen können.
((tablelivespace / compression ratio) * (total number of nodes))/ (replication factor)Nehmen wir an, Ihr Cassandra-Cluster hat 12 Knoten. Die Ausführung des
nodetool tablestatsBefehls gibt atablelivespacevon 200 GB und acompression ratiovon 0,5 zurück. Der Schlüsselraum hat einen Replikationsfaktor von drei.So sieht die Berechnung für dieses Beispiel aus.
(200 GB / 0.5) * (12 nodes)/ (replication factor of 3) = 4,800 GB / 3 = 1,600 GB is the table size estimate for Amazon Keyspaces
Erfassen Sie die Anzahl der Lese- und Schreibvorgänge
Um die Kapazitäts- und Skalierungsanforderungen für Ihre Amazon Keyspaces-Tabellen zu ermitteln, erfassen Sie vor der Migration die Lese- und Schreibanforderungsrate Ihrer Cassandra-Tabellen.
Amazon Keyspaces ist serverlos und Sie zahlen nur für das, was Sie nutzen. Im Allgemeinen basiert der Preis für den read/write Durchsatz in Amazon Keyspaces auf der Anzahl und Größe der Anfragen.
In Amazon Keyspaces gibt es zwei Kapazitätsmodi:
On-demand— Dies ist eine flexible Abrechnungsoption, mit der Tausende von Anfragen pro Sekunde bedient werden können, ohne dass eine Kapazitätsplanung erforderlich ist. Sie bietet für Lese- und Schreibanfragen eine Abrechnung pro Anfrage, sodass Sie nur für das bezahlen, was Sie tatsächlich nutzen.
Bereitgestellt — Wenn Sie den Modus für bereitgestellte Durchsatzkapazität wählen, geben Sie die Anzahl der Lese- und Schreibvorgänge pro Sekunde an, die für Ihre Anwendung erforderlich sind. Dies hilft Ihnen dabei, Ihre Amazon Keyspaces-Nutzung so zu verwalten, dass sie bei oder unter einer definierten Anforderungsrate bleibt, um die Vorhersagbarkeit zu gewährleisten.
Der Bereitstellungsmodus bietet eine automatische Skalierung, sodass Ihre bereitgestellte Rate automatisch angepasst wird, um die betriebliche Effizienz zu erhöhen oder zu verringern. Weitere Informationen zur serverlosen Ressourcenverwaltung finden Sie unter. Verwaltung serverloser Ressourcen in Amazon Keyspaces (für Apache Cassandra)
Da Sie die Lese- und Schreibdurchsatzkapazität in Amazon Keyspaces separat bereitstellen, müssen Sie die Anforderungsrate für Lese- und Schreibvorgänge in Ihren vorhandenen Tabellen unabhängig voneinander messen.
Um die genauesten Nutzungsmetriken aus Ihrem vorhandenen Cassandra-Cluster zu ermitteln, erfassen Sie die durchschnittlichen Anforderungen pro Sekunde (RPS) für Lese- und Schreibvorgänge auf Koordinatorenebene über einen längeren Zeitraum für eine Tabelle, die über alle Knoten in einem einzigen Rechenzentrum aggregiert ist.
Durch die Erfassung des durchschnittlichen RPS über einen Zeitraum von mindestens mehreren Wochen werden Spitzen und Täler in Ihren Verkehrsmustern erfasst, wie im folgenden Diagramm dargestellt.
Sie haben zwei Möglichkeiten, die Lese- und Schreibanforderungsrate Ihrer Cassandra-Tabelle zu bestimmen.
Verwenden Sie das vorhandene Cassandra-Monitoring
Sie können die in der folgenden Tabelle aufgeführten Metriken verwenden, um Lese- und Schreibanforderungen zu beobachten. Beachten Sie, dass sich die Metriknamen je nach verwendetem Überwachungstool ändern können.
Dimension Cassandra JMX-Metrik Writes
org.apache.cassandra.metrics:type=ClientRequest, scope=Write,name=Latency#CountReads
org.apache.cassandra.metrics:type=ClientRequest, scope=Read,name=Latency#CountVerwenden der
nodetoolVerwenden Sie
nodetool tablestatsundnodetool info, um durchschnittliche Lese- und Schreibvorgänge aus der Tabelle zu erfassen.tablestatsgibt die Gesamtzahl der Lese- und Schreibvorgänge ab dem Zeitpunkt zurück, zu dem der Knoten initiiert wurde.nodetool infogibt die Betriebszeit für einen Knoten in Sekunden an.Um den Durchschnitt der Lese- und Schreibvorgänge pro Sekunde zu erhalten, dividieren Sie die Anzahl der Lese- und Schreibvorgänge durch die Knotenbetriebszeit in Sekunden. Dann dividieren Sie für Lesevorgänge durch das Konsistenzniveau und für Schreibvorgänge dividieren Sie durch den Replikationsfaktor. Diese Berechnungen werden in den folgenden Formeln ausgedrückt.
Formel für durchschnittliche Lesevorgänge pro Sekunde:
((number of reads * number of nodes in cluster) / read consistency quorum (2)) / uptimeFormel für durchschnittliche Schreibvorgänge pro Sekunde:
((number of writes * number of nodes in cluster) / replication factor of 3) / uptimeNehmen wir an, wir haben einen Cluster mit 12 Knoten, der seit 4 Wochen aktiv ist.
nodetool infogibt 2.419.200 Sekunden Betriebszeit zurück undnodetool tablestatsgibt 1 Milliarde Schreibvorgänge und 2 Milliarden Lesevorgänge zurück. Dieses Beispiel würde zu der folgenden Berechnung führen.((2 billion reads * 12 in cluster) / read consistency quorum (2)) / 2,419,200 seconds = 12 billion reads / 2,419,200 seconds = 4,960 read request per second ((1 billion writes * 12 in cluster) / replication factor of 3) / 2,419,200 seconds = 4 billion writes / 2,419,200 seconds = 1,653 write request per second
Ermitteln Sie die Kapazitätsauslastung der Tabelle
Um die durchschnittliche Kapazitätsauslastung abzuschätzen, beginnen Sie mit den durchschnittlichen Anforderungsraten und der durchschnittlichen Zeilengröße Ihrer Cassandra-Quelltabelle.
Amazon Keyspaces verwendet Lesekapazitätseinheiten (RCUs) und Schreibkapazitätseinheiten (WCUs), um die bereitgestellte Durchsatzkapazität für Lese- und Schreibvorgänge für Tabellen zu messen. Für diese Schätzung verwenden wir diese Einheiten, um den Lese- und Schreibkapazitätsbedarf der neuen Amazon Keyspaces-Tabelle nach der Migration zu berechnen.
Später in diesem Thema werden wir erörtern, wie sich die Wahl zwischen bereitgestelltem und bedarfsorientiertem Kapazitätsmodus auf die Abrechnung auswirkt. Für die Schätzung der Kapazitätsauslastung in diesem Beispiel gehen wir jedoch davon aus, dass sich die Tabelle im Bereitstellungsmodus befindet.
Lesevorgänge — Eine RCU steht für eine
LOCAL_QUORUMLeseanforderung oder zweiLOCAL_ONELeseanforderungen für eine Zeile mit einer Größe von bis zu 4 KB. Wenn Sie eine Zeile lesen müssen, die größer als 4 KB ist, verwendet der Lesevorgang zusätzliche RCU. Die Gesamtzahl der benötigten RCUs hängt von der Zeilengröße ab und davon, ob Sie Consistency verwendenLOCAL_QUORUModerLOCAL_ONElesen möchten.Zum Lesen einer 8-KB-Zeile sind beispielsweise 2 RCU mit
LOCAL_QUORUMLesekonsistenz erforderlich, und 1 RCU, wenn Sie Lesekonsistenz wählenLOCAL_ONE.Schreibvorgänge — Eine WCU steht für einen Schreibvorgang für eine Zeile mit einer Größe von bis zu 1 KB. Bei allen Schreibvorgängen wird
LOCAL_QUORUMKonsistenz verwendet, und für die Verwendung von Lightweight Transactions (LWTs) fallen keine zusätzlichen Gebühren an.Die Gesamtzahl der benötigten WCUs hängt von der Zeilengröße ab. Wenn Sie eine Zeile schreiben müssen, die größer als 1 KB ist, verwendet der Schreibvorgang zusätzliche WCUs. Wenn Ihre Zeilengröße beispielsweise 2 KB beträgt, benötigen Sie 2 WCUs, um eine Schreibanforderung auszuführen.
Die folgende Formel kann verwendet werden, um die erforderlichen RCUs und WCUs zu schätzen.
Die Lesekapazität in RCUs kann bestimmt werden, indem die Lesevorgänge pro Sekunde mit der Anzahl der pro Lesevorgang gelesenen Zeilen multipliziert und mit der durchschnittlichen Zeilengröße geteilt durch 4 KB multipliziert und auf die nächste ganze Zahl aufgerundet werden.
Die Schreibkapazität in WCUs kann bestimmt werden, indem die Anzahl der Anfragen mit der durchschnittlichen Zeilengröße geteilt durch 1 KB multipliziert und auf die nächste ganze Zahl aufgerundet wird.
Dies wird in den folgenden Formeln ausgedrückt.
Read requests per second * ROUNDUP((Average Row Size)/4096 per unit) = RCUs per second Write requests per second * ROUNDUP(Average Row Size/1024 per unit) = WCUs per secondWenn Sie beispielsweise 4.960 Leseanforderungen mit einer Zeilengröße von 2,5 KB in Ihrer Cassandra-Tabelle ausführen, benötigen Sie 4.960 RCUs in Amazon Keyspaces. Wenn Sie derzeit 1.653 Schreibanforderungen pro Sekunde mit einer Zeilengröße von 2,5 KB in Ihrer Cassandra-Tabelle ausführen, benötigen Sie 4.959 WCUs pro Sekunde in Amazon Keyspaces.
Dieses Beispiel wird in den folgenden Formeln ausgedrückt.
4,960 read requests per second * ROUNDUP( 2.5KB /4KB bytes per unit) = 4,960 read requests per second * 1 RCU = 4,960 RCUs 1,653 write requests per second * ROUNDUP(2.5KB/1KB per unit) = 1,653 requests per second * 3 WCUs = 4,959 WCUseventual consistencyMithilfe können Sie bei jeder Leseanforderung bis zur Hälfte der Durchsatzkapazität einsparen. Jeder letztendlich konsistente Lesevorgang kann bis zu 8 KB verbrauchen. Sie können mögliche konsistente Lesevorgänge berechnen, indem Sie die vorherige Berechnung mit 0,5 multiplizieren, wie in der folgenden Formel dargestellt.4,960 read requests per second * ROUNDUP( 2.5KB /4KB per unit) * .5 = 2,480 read request per second * 1 RCU = 2,480 RCUs-
Berechnen Sie die monatliche Preisschätzung für Amazon Keyspaces
Um die monatliche Abrechnung für die Tabelle auf der Grundlage des read/write Kapazitätsdurchsatzes abzuschätzen, können Sie die Preise für den On-Demand- und den Bereitstellungsmodus mithilfe verschiedener Formeln berechnen und die Optionen für Ihre Tabelle vergleichen.
Bereitgestellter Modus — Der Kapazitätsverbrauch für Lese- und Schreibvorgänge wird auf der Grundlage der Kapazitätseinheiten pro Sekunde auf Stundenbasis abgerechnet. Teilen Sie diese Rate zunächst durch 0,7, um der standardmäßigen Autoscaling-Zielauslastung von 70% zu entsprechen. Multiplizieren Sie dann mit 30 Kalendertagen, 24 Stunden pro Tag und regionaler Preisgestaltung.
Diese Berechnung wird in den folgenden Formeln zusammengefasst.
(read capacity per second / .7) * 24 hours * 30 days * regional rate (write capacity per second / .7) * 24 hours * 30 days * regional rateOn-demand Modus — Die Lese- und Schreibkapazität wird pro Anforderung abgerechnet. Multiplizieren Sie zunächst die Anforderungsrate mit 30 Kalendertagen und 24 Stunden pro Tag. Teilen Sie dann durch eine Million Anforderungseinheiten. Schließlich multiplizieren Sie mit der regionalen Rate.
Diese Berechnung ist in den folgenden Formeln zusammengefasst.
((read capacity per second * 30 * 24 * 60 * 60) / 1 Million read request units) * regional rate ((write capacity per second * 30 * 24 * 60 * 60) / 1 Million write request units) * regional rate
Wählen Sie eine Migrationsstrategie
Bei der Migration von Apache Cassandra zu Amazon Keyspaces können Sie zwischen den folgenden Migrationsstrategien wählen:
Online — Dies ist eine Live-Migration, bei der duale Schreibvorgänge verwendet werden, um gleichzeitig mit dem Schreiben neuer Daten in Amazon Keyspaces und den Cassandra-Cluster zu beginnen. Dieser Migrationstyp wird für Anwendungen empfohlen, die während der Migration keine Ausfallzeiten und eine konsistente Lese-nach-Schreib-Verarbeitung erfordern.
Weitere Informationen zur Planung und Implementierung einer Online-Migrationsstrategie finden Sie unterOnline-Migration zu Amazon Keyspaces: Strategien und bewährte Verfahren.
Offline — Bei dieser Migrationstechnik wird ein Datensatz während eines Ausfallzeitfensters von Cassandra nach Amazon Keyspaces kopiert. Eine Offline-Migration kann den Migrationsprozess vereinfachen, da keine Änderungen an Ihrer Anwendung oder eine Konfliktlösung zwischen historischen Daten und neuen Schreibvorgängen erforderlich sind.
Weitere Informationen zur Planung einer Offline-Migration finden Sie unterOffline-Migrationsprozess: Apache Cassandra zu Amazon Keyspaces.
Hybrid — Mit dieser Migrationstechnik können Änderungen nahezu in Echtzeit auf Amazon Keyspaces repliziert werden, jedoch ohne Konsistenz beim Lesen nach dem Schreiben.
Weitere Informationen zur Planung einer Hybridmigration finden Sie unter. Verwendung einer hybriden Migrationslösung: Apache Cassandra zu Amazon Keyspaces
Nachdem Sie sich mit den in diesem Thema erläuterten Migrationstechniken und bewährten Methoden vertraut gemacht haben, können Sie die verfügbaren Optionen in einer Entscheidungsstruktur platzieren, um eine Migrationsstrategie zu entwerfen, die auf Ihren Anforderungen und verfügbaren Ressourcen basiert.