Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Migrez les charges de travail Apache Cassandra vers Amazon Keyspaces à l'aide d'AWS Glue
Créée par Nikolai Kolesnikov (AWS), Karthiga Priya Chandran (AWS) et Samir Patel (AWS)
Environnement : Production | Source : Cassandre | Cible : Amazon Keyspaces |
Type R : N/A | Charge de travail : open source ; toutes les autres charges de travail | Technologies : analyse ; migration ; sans serveur ; mégadonnées |
Services AWS : AWS Glue ; Amazon Keyspaces ; Amazon S3 ; AWS CloudShell |
Récapitulatif
Ce modèle vous montre comment migrer vos charges de travail Apache Cassandra existantes vers Amazon Keyspaces (pour Apache Cassandra) à l'aide de CQLReplicator sur AWS Glue. Vous pouvez utiliser CQLReplicator sur AWS Glue pour réduire à quelques minutes le délai de réplication lié à la migration de vos charges de travail. Vous apprendrez également à utiliser un bucket Amazon Simple Storage Service (Amazon S3) pour stocker les données nécessaires à la migration, notamment les fichiers Apache
Conditions préalables et limitations
Prérequis
Cluster Cassandra avec table source
Table cible dans Amazon Keyspaces pour répliquer la charge de travail
Compartiment S3 pour stocker les fichiers Parquet intermédiaires contenant des modifications de données incrémentielles
Compartiment S3 pour stocker les fichiers de configuration des tâches et les scripts
Limites
CQLReplicator sur AWS Glue nécessite un certain temps pour fournir des unités de traitement de données (DPU) pour les charges de travail Cassandra. Le délai de réplication entre le cluster Cassandra et l'espace de touches et la table cibles dans Amazon Keyspaces ne durera probablement que quelques minutes.
Architecture
Pile technologique source
Apache Cassandra
DataStax serveur
ScyllaDB
Pile technologique cible
Amazon Keyspaces
Architecture de migration
Le schéma suivant montre un exemple d'architecture dans lequel un cluster Cassandra est hébergé sur des instances EC2 et réparti sur trois zones de disponibilité. Les nœuds Cassandra sont hébergés dans des sous-réseaux privés.
![Rôle de service personnalisé, Amazon Keyspaces et Amazon S3, avec AWS Glue se connectant au VPC des nœuds.](images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)
Le schéma suivant illustre le flux de travail suivant :
Un rôle de service personnalisé permet d'accéder à Amazon Keyspaces et au compartiment S3.
Une tâche AWS Glue lit la configuration de la tâche et les scripts contenus dans le compartiment S3.
La tâche AWS Glue se connecte via le port 9042 pour lire les données du cluster Cassandra.
La tâche AWS Glue se connecte via le port 9142 pour écrire des données sur Amazon Keyspaces.
Outils
Services et outils AWS
L'interface de ligne de commande AWS (AWS CLI) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
AWS CloudShell est un shell basé sur un navigateur que vous pouvez utiliser pour gérer les services AWS à l'aide de l'AWS Command Line Interface (AWS CLI) et d'une gamme d'outils de développement préinstallés.
AWS Glue est un service ETL entièrement géré qui vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
Amazon Keyspaces (pour Apache Cassandra) est un service de base de données géré qui vous aide à migrer, exécuter et dimensionner vos charges de travail Cassandra dans le cloud AWS.
Code
Le code de ce modèle est disponible dans le référentiel GitHub CQLReplicator
Bonnes pratiques
Pour déterminer les ressources AWS Glue nécessaires à la migration, estimez le nombre de lignes de la table source Cassandra. Par exemple, 250 000 lignes par DPU 0,25 (2 vCPU, 4 Go de mémoire) avec un disque de 84 Go.
Préchauffez les tables Amazon Keyspaces avant d'exécuter CQLReplicator. Par exemple, huit tuiles CQLReplicator (tâches AWS Glue) peuvent écrire jusqu'à 22 000 WCU par seconde. La cible doit donc être préchauffée jusqu'à 25 à 30 000 WCU par seconde.
Pour activer la communication entre les composants AWS Glue, utilisez une règle d'autoréférencement entrant pour tous les ports TCP de votre groupe de sécurité.
Utilisez la stratégie de trafic incrémentiel pour répartir la charge de travail de migration dans le temps.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez un espace de touches et un tableau cibles. |
| Propriétaire de l'application, administrateur AWS, DBA, développeur d'applications |
Configurez le pilote Cassandra pour vous connecter à Cassandra. | Utilisez le script de configuration suivant :
Remarque : Le script précédent utilise le connecteur Spark Cassandra. Pour plus d'informations, consultez la configuration de référence pour Cassandra | DBA |
Configurez le pilote Cassandra pour vous connecter à Amazon Keyspaces. | Utilisez le script de configuration suivant :
Remarque : Le script précédent utilise le connecteur Spark Cassandra. Pour plus d'informations, consultez la configuration de référence pour Cassandra | DBA |
Créez un rôle IAM pour la tâche AWS Glue. | Créez un nouveau rôle de service AWS nommé Remarque : ils | AWS DevOps |
Téléchargez CQLReplicator dans AWS. CloudShell | Téléchargez le projet dans votre dossier personnel en exécutant la commande suivante :
| |
Modifiez les fichiers de configuration de référence. | Copiez | AWS DevOps |
Lancez le processus de migration. | La commande suivante initialise l'environnement CQLReplicator. L'initialisation implique de copier des artefacts .jar et de créer un connecteur AWS Glue, un compartiment S3, une tâche AWS Glue, le
Le script comprend les paramètres suivants :
| AWS DevOps |
Validez le déploiement. | Après avoir exécuté la commande précédente, le compte AWS doit contenir les éléments suivants :
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Lancez le processus de migration. | Pour utiliser CQLReplicator sur AWS Glue, vous devez utiliser la Pour répliquer la charge de travail du cluster Cassandra vers Amazon Keyspaces, exécutez la commande suivante :
Votre keyspace source et votre table se trouvent Pour répliquer les mises à jour, ajoutez-les | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Validez les lignes Cassandra migrées pendant la phase de migration historique. | Pour obtenir le nombre de lignes répliquées pendant la phase de remblayage, exécutez la commande suivante :
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Utilisez la | Pour arrêter le processus de migration correctement, exécutez la commande suivante :
Pour arrêter immédiatement le processus de migration, utilisez la console AWS Glue. | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez les ressources déployées. | La commande suivante supprimera la tâche AWS Glue, le connecteur, le compartiment S3 et la table Keyspaces :
| AWS DevOps |
Résolution des problèmes
Problème | Solution |
---|---|
Les tâches AWS Glue ont échoué et ont renvoyé une erreur OOM (Out of Memory). |
|
Ressources connexes
Informations supplémentaires
Considérations concernant la migration
Vous pouvez utiliser AWS Glue pour migrer votre charge de travail Cassandra vers Amazon Keyspaces, tout en préservant le bon fonctionnement de vos bases de données sources Cassandra pendant le processus de migration. Une fois la réplication terminée, vous pouvez choisir de transférer vos applications vers Amazon Keyspaces avec un délai de réplication minimal (moins de quelques minutes) entre le cluster Cassandra et Amazon Keyspaces. Pour garantir la cohérence des données, vous pouvez également utiliser un pipeline similaire pour répliquer les données vers le cluster Cassandra depuis Amazon Keyspaces.
Écrire des calculs unitaires
Par exemple, imaginez que vous avez l'intention d'écrire 500 000 000 avec une taille de ligne de 1 KiB pendant une heure. Le nombre total d'unités d'écriture (WCU) Amazon Keyspaces dont vous avez besoin est basé sur ce calcul :
(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required
69 444 WCU par seconde, c'est le tarif pour 1 heure, mais vous pouvez ajouter une certaine marge de manœuvre pour couvrir les frais généraux. Par exemple, 69,444 * 1.10 = 76,388 WCUs
a une surcharge de 10 %.
Création d'un espace de touches à l'aide de CQL
Pour créer un espace de touches à l'aide de CQL, exécutez les commandes suivantes :
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)