Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A: Casandra
Como desarrollador, es posible que tenga cargas de trabajo de Cassandra existentes que se ejecutan de forma local o en la nube y puede que desee migrarlas a Azure. Puede migrar estas cargas de trabajo a una cuenta de API para Cassandra en Azure Cosmos DB. Este tutorial proporciona instrucciones sobre las diferentes opciones disponibles para migrar datos de Apache Cassandra a la cuenta de API para Cassandra en Azure Cosmos DB.
En este tutorial se describen las tareas siguientes:
- Planear la migración
- Requisitos previos para la migración
- Migración de los datos mediante el comando
cqlsh
COPY
- Migración de datos mediante Spark
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Requisitos previos para la migración
Calcule sus necesidades de rendimiento: Antes de migrar datos a la cuenta de API for Cassandra en Azure Cosmos DB, calcule las necesidades de rendimiento de la carga de trabajo. En general, comience con el rendimiento medio requerido por las operaciones CRUD. A continuación, incluya el rendimiento adicional necesario para la extracción, transformación y carga, así como para las operaciones con picos de demanda. Necesita los siguientes detalles para planear la migración:
Tamaño de datos existente o tamaño de datos estimado: Define el requisito de rendimiento y de tamaño mínimo de la base de datos. Si calcula el tamaño de los datos para una nueva aplicación, puede suponer que los datos se distribuyen uniformemente entre las filas y calculan el valor multiplicando con el tamaño de los datos.
Rendimiento necesario: tasa de rendimiento de las operaciones de lectura (consultar/obtener) y escritura (actualizar/eliminar/insertar) aproximada. Este valor es necesario para calcular las unidades de solicitud necesarios junto con el tamaño de datos de estado estable.
Obtener el esquema: conéctese a su clúster de Cassandra existente mediante
cqlsh
y exporte el esquema desde Cassandra:cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
Después de identificar los requisitos de carga de trabajo existentes, cree una cuenta de Azure Cosmos DB, base de datos y contenedores según los requisitos de rendimiento recopilados.
Determinar la carga de unidades de solicitud para una operación: puede determinar las unidades de solicitud mediante cualquiera de los SDK compatibles con API para Cassandra. En este ejemplo se muestra la versión de .NET de la obtención de cargos de la unidad de solicitud.
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}"); }
Asignación del rendimiento necesario: Azure Cosmos DB puede escalar automáticamente el almacenamiento y rendimiento a medida que crecen sus necesidades. Puede estimar sus necesidades de rendimiento mediante el uso de la Calculadora de unidades de solicitud de Azure Cosmos DB.
Cree tablas en la api para la cuenta de Cassandra: Antes de empezar a migrar datos, cree previamente todas las tablas desde Azure Portal o desde
cqlsh
. Si va a migrar a una cuenta de Azure Cosmos DB con rendimiento de nivel de base de datos, asegúrese de proporcionar una clave de partición al crear los contenedores.Aumento del rendimiento: La duración de la migración de datos depende de la cantidad de rendimiento aprovisionado para las tablas de Azure Cosmos DB. Aumente el rendimiento durante la migración. Gracias al mayor rendimiento, puede evitar la limitación de velocidad y realizar la migración en menos tiempo. Después de completar la migración, reduzca el rendimiento para ahorrar costos. También se recomienda que tenga la cuenta de Azure Cosmos DB en la misma región que la base de datos de origen.
Habilitación de TLS: Azure Cosmos DB tiene estándares y requisitos de seguridad estrictos. No olvide habilitar TLS al interactuar con la cuenta. Al usar CQL con SSH, puede proporcionar información de TLS.
Opciones para migrar datos
Puede mover los datos de cargas de trabajo existentes de Cassandra a Azure Cosmos DB mediante el comando cqlsh
COPY
o con Spark.
Migración de datos mediante el comando COPY de cqlsh
Advertencia
Use solo CQL COPY para migrar conjuntos de datos pequeños. Para mover grandes conjuntos de datos, migre los datos mediante Spark.
Para asegurarse de que el archivo csv contiene la estructura de archivos correcta, use el
COPY TO
comando para exportar datos directamente desde la tabla de Cassandra de origen a un archivo CSV. Asegúrese de que cqlsh está conectado a la tabla de origen mediante las credenciales adecuadas.COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;
Ahora, obtenga la información de la cadena de conexión de la cuenta de API para Cassandra:
Inicie sesión en Azure Portal y vaya a la cuenta de Azure Cosmos DB.
Abra el panel Cadena de conexión. Aquí tiene toda la información que necesita para conectarse a su cuenta de API para Cassandra desde
cqlsh
.
Inicie sesión en
cqlsh
mediante la información de conexión de Azure Portal.Use el
CQL
COPY FROM
comando para copiardata.csv
. Este archivo todavía se encuentra en el directorio raíz del usuario dondecqlsh
está instalado.COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
Nota
API para Cassandra admite la versión 4 del protocolo, que se envió con Cassandra 3.11. Puede haber problemas con el uso de versiones posteriores del protocolo con nuestra API. COPY FROM con una versión posterior de protocolo puede entrar en un bucle y devolver filas duplicadas.
Agregue la versión de protocolo al comando cqlsh.
cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Agregue opciones de limitación de rendimiento al comando CQL Copy
El comando COPY de cqlsh admite varios parámetros para controlar la tasa de ingesta de documentos en Azure Cosmos DB.
La configuración predeterminada para el comando COPY intenta ingerir datos a un ritmo muy rápido. No tiene en cuenta el comportamiento de limitación de velocidad de Cosmos DB. Debe reducir CHUNKSIZE o INGESTRATE en función del rendimiento que se haya configurado en la colección.
Se recomienda la siguiente configuración (como mínimo) para una colección en 20 000 RU si el tamaño del documento o registro es de 1 KB.
- CHUNKSIZE = 100
- INGESTRATE = 500
- MAXATTEMPTS = 10
Comandos de ejemplo
Copia de datos de API para Cassandra en un archivo CSV local
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
Copia de datos del archivo CSV local a API para Cassandra
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;
Importante
Solo se admite la versión de código abierto de Apache Cassandra de CQLSH COPY. Las versiones de CQLSH de Datastax Enterprise (DSE) pueden encontrar errores.
Migración de datos mediante Spark
Siga estos pasos para migrar datos a la cuenta de API para Cassandra con Spark:
Aprovisione un clúster de Azure Databricks o un clúster de Azure HDInsight.
Mueva los datos al punto de conexión de destino de API para Cassandra. Para más información, consulte Migración de datos de Cassandra a una cuenta de Azure Cosmos DB para Apache Cassandra.
La migración de datos mediante el uso de trabajos de Spark es una opción recomendada si tiene datos que residen en un clúster existente en máquinas virtuales de Azure o cualquier otra nube. Configure Spark como intermediario para la ingesta única o regular. Puede acelerar la migración mediante el uso de la conectividad de Azure ExpressRoute entre el entorno local y Azure.
Migración en vivo
Si necesita una migración sin tiempo de inactividad desde un clúster nativo de Apache Cassandra, se recomienda configurar escrituras duales y una carga de datos masiva independiente para migrar datos históricos. La implementación de este patrón es más sencilla mediante un proxy de doble escritura de código abierto para permitir cambios mínimos en el código de la aplicación. Para más información, consulte Migración en vivo de datos de Apache Cassandra a Azure Cosmos DB para Apache Cassandra.
Limpieza de recursos
Cuando ya no los necesite, puede eliminar el grupo de recursos, la cuenta de Azure Cosmos DB y todos los recursos relacionados. Para ello, seleccione el grupo de recursos de la máquina virtual, seleccione Eliminar y luego confirme el nombre del grupo de recursos que va a eliminar.
Paso siguiente
En este tutorial, ha aprendido a migrar los datos a una cuenta de API for Cassandra en Azure Cosmos DB. Ahora puede conocer otros conceptos de Azure Cosmos DB: