Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’APPLIQUE À :
Cassandre
En tant que développeur, vous pouvez avoir des charges de travail Cassandra existantes qui s’exécutent localement ou dans le cloud. Vous souhaiterez peut-être les migrer vers Azure. Vous pouvez migrer ces charges de travail vers une API pour un compte Cassandra dans Azure Cosmos DB. Ce tutoriel fournit des instructions sur différentes options disponibles pour migrer des données Apache Cassandra vers l’API pour le compte Cassandra dans Azure Cosmos DB.
Ce tutoriel décrit les tâches suivantes :
- Planifier la migration.
- Remplissez les conditions préalables à la migration.
- Migrez des données à l’aide de la
cqlshCOPYcommande. - Migrez des données à l’aide de Spark.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Prérequis pour la migration
Estimer vos besoins en débit : Avant de migrer des données vers l’API pour le compte Cassandra dans Azure Cosmos DB, estimez les besoins en débit de votre charge de travail. En général, commencez par le débit moyen requis par les opérations cruD (create, read, update et delete). Incluez ensuite le débit supplémentaire requis pour les opérations d’extraction, de transformation et de chargement (ETL) ou les pics d’activité. Vous avez besoin des informations suivantes pour planifier la migration :
Taille des données existantes ou taille estimée des données : définit les exigences minimales de taille de la base de données et de débit. Si vous estimez la taille des données pour une nouvelle application, vous pouvez supposer que les données sont réparties uniformément entre les lignes. Vous pouvez estimer la valeur en multipliant par la taille des données.
Débit nécessaire : débit approximatif des opérations de lecture (interroger/obtenir) et d'écriture (mettre à jour/supprimer/insérer). Cette valeur est nécessaire pour calculer les unités de requête nécessaires, ainsi que la taille des données à l'état stable.
Le schéma : connectez-vous à votre cluster Cassandra existant via
cqlshet exportez le schéma depuis Cassandra :cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cqlAprès avoir identifié les exigences de votre charge de travail existante, créez un compte, une base de données et des conteneurs Azure Cosmos DB en fonction des exigences de débit collectées.
Déterminez les frais d’unité de requête (RU) pour une opération : Vous pouvez déterminer les unités de requête (RU) en utilisant l’un des kits SDK pris en charge par l’API de Cassandra. Cet exemple montre la version .NET pour obtenir les frais de RU.
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}"); }
Allouer le débit requis : Azure Cosmos DB peut mettre à l’échelle automatiquement le stockage et le débit au fil de l’accroissement de vos besoins. Vous pouvez estimer vos besoins en débit à l’aide de la calculatrice de RU Azure Cosmos DB.
Créez des tables dans l’API pour le compte Cassandra : Avant de commencer à migrer des données, précréez toutes vos tables à partir du portail Azure ou à partir de
cqlsh. Si vous migrez vers un compte Azure Cosmos DB disposant d’un débit au niveau de la base de données, fournissez une clé de partition lorsque vous créez les conteneurs.Augmenter le débit : la durée de la migration de vos données dépend de la quantité de débit que vous avez provisionnée pour les tables dans Azure Cosmos DB. Augmentez le débit pendant la migration. Avec un débit plus élevé, vous pouvez éviter la limitation du débit et migrer en moins de temps. Une fois la migration terminée, réduisez le débit pour économiser des coûts. Nous vous recommandons également de disposer d'un compte Azure Cosmos DB dans la même région que votre base de données source.
Activer le protocole TLS (Transport Layer Security) : Azure Cosmos DB a des exigences et des normes de sécurité strictes. Activez TLS lorsque vous interagissez avec votre compte. Lorsque vous utilisez le langage de requête Cassandra (CQL) avec Secure Shell, vous pouvez fournir des informations TLS.
Options pour migrer des données
Vous pouvez déplacer des données de charges de travail Cassandra existantes vers Azure Cosmos DB à l’aide de la cqlshCOPY commande ou à l’aide de Spark.
Migrer des données à l'aide de la commande cqlsh COPY
Avertissement
Utilisez uniquement la commande CQL COPY pour migrer de petits jeux de données. Pour déplacer des jeux de données volumineux, migrez les données à l’aide de Spark.
Pour être certain que votre fichier .csv contient la structure de fichiers correcte, utilisez la
COPY TOcommande pour exporter des données directement à partir de votre table Cassandra source vers un fichier .csv. Assurez-vous quecqlshest connecté à la table source en utilisant les informations d'identification appropriées.COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;Obtenez maintenant les informations de chaîne de connexion de votre API pour le compte Cassandra :
- Connectez-vous au portail Azure et accédez à votre compte Azure Cosmos DB.
- Ouvrez le volet Chaîne de connexion. Vous y trouverez toutes les informations dont vous avez besoin pour vous connecter à votre compte d'API pour Cassandra depuis
cqlsh.
Connectez-vous à
cqlshen utilisant les informations de connexion du portail Azure.Utilisez la commande CQL
COPY FROMpour copierdata.csv. Ce fichier se trouve toujours dans le répertoire racine de l’utilisateur oùcqlshest installé.COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
Remarque
L’API pour Cassandra prend en charge le protocole version 4, fournie avec Cassandra 3.11. Il peut y avoir des problèmes si vous utilisez des versions de protocole ultérieures avec notre API. Avec une version ultérieure du protocole, la COPY FROM commande peut accéder à une boucle et retourner des lignes dupliquées.
Ajoutez protocol-version à la cqlsh commande :
cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Ajouter des options de limitation de débit à la commande CQL COPY
La commande COPY dans cqlsh prend en charge divers paramètres pour contrôler le taux d'ingestion de documents dans Azure Cosmos DB.
La configuration par défaut de la COPY commande tente d’ingérer des données à un rythme rapide. Il ne tient pas compte du comportement de limitation de débit d’Azure Cosmos DB. Réduisez CHUNKSIZE ou INGESTRATE selon le débit configuré sur la collection.
Nous recommandons la configuration suivante (au minimum) pour une collection à 20 000 RU si la taille du document ou de l’enregistrement est de 1 Ko :
-
CHUNKSIZE= 100 -
INGESTRATE= 500 -
MAXATTEMPTS= 10
Exemples de commandes
Copiez des données de l’API pour Cassandra vers un fichier .csv local :
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;Copiez des données d’un fichier .csv local vers l’API pour Cassandra :
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;
Important
Seule la version open source d’Apache CQLSH COPY Cassandra est prise en charge. Les versions de Datastax Enterprise (DSE) CQLSH peuvent rencontrer des erreurs.
Migrer des données à l’aide de Spark
Pour migrer des données vers l’API pour le compte Cassandra avec Spark, procédez comme suit :
Approvisionnez un cluster Azure Databricks ou un cluster HDInsight.
Déplacez les données vers le point de terminaison de l'API pour Cassandra de destination. Pour plus d’informations, consultez Migrer des données de Cassandra vers un compte Azure Cosmos DB pour Apache Cassandra.
Si vous avez des données qui résident dans un cluster existant dans des machines virtuelles Azure ou tout autre cloud, nous vous recommandons d’utiliser des travaux Spark pour migrer les données. Configurez Spark comme intermédiaire pour l’ingestion ponctuelle ou régulière. Vous pouvez accélérer cette migration avec une connectivité Azure ExpressRoute entre votre environnement local et Azure.
Migration dynamique
Si vous avez besoin d’une migration sans temps d’arrêt à partir d’un cluster Apache Cassandra natif, nous vous recommandons de configurer des écritures doubles et une charge de données en bloc distincte pour migrer des données historiques. L’implémentation de ce modèle est plus simple lorsque vous utilisez un proxy en double écriture open source pour permettre des modifications minimales du code d’application. Pour plus d’informations, consultez Migration en direct des données d'Apache Cassandra vers Azure Cosmos DB pour Apache Cassandra.
Nettoyer les ressources
Lorsque les ressources ne sont plus nécessaires, vous pouvez supprimer le groupe de ressources, le compte Azure Cosmos DB et toutes les ressources associées. Pour cela, sélectionnez le groupe de ressources de la machine virtuelle, sélectionnez Supprimer, puis confirmez le nom du groupe de ressources à supprimer.
Étape suivante
Dans ce tutoriel, vous avez appris à migrer vos données vers une API pour un compte Cassandra dans Azure Cosmos DB. Vous pouvez maintenant découvrir d'autres concepts d'Azure Cosmos DB :