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. Es posible que quiera migrarlos a Azure. Puede migrar estas cargas de trabajo a una cuenta de API para Cassandra en Azure Cosmos DB. En este tutorial se proporcionan instrucciones sobre las distintas opciones disponibles para migrar datos de Apache Cassandra a la cuenta de API for Cassandra en Azure Cosmos DB.
En este tutorial se describen las tareas siguientes:
- Planee la migración.
- Cumplir los requisitos previos para la migración.
- Migre datos mediante el
cqlshCOPYcomando . - 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 de creación, lectura, actualización y eliminación (CRUD). A continuación, incluya el rendimiento adicional necesario para las operaciones de extracción, transformación y carga (ETL) o spiky. Necesita los siguientes detalles para planear la migración:
Tamaño de los datos existentes o tamaño de datos estimado: define el requisito de tamaño y el rendimiento de base de datos mínimo. Si calcula el tamaño de los datos de una nueva aplicación, puede suponer que los datos se distribuyen uniformemente entre las filas. Puede calcular el valor multiplicando por 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
cqlshy exporte el esquema desde Cassandra:cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cqlDespués de identificar los requisitos de la carga de trabajo existente, cree una cuenta, una base de datos y contenedores de Azure Cosmos DB según los requisitos de rendimiento recopilados.
Determinar el cargo de las unidades de solicitud (RU) de una operación: puede determinar las unidades de solicitud mediante cualquiera de los SDK compatibles con la 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}"); }
Asignar el rendimiento necesario: Azure Cosmos DB puede escalar automáticamente el almacenamiento y rendimiento a medida que crecen sus necesidades. Puede calcular las necesidades de rendimiento mediante la calculadora de RU 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 que tiene un rendimiento de nivel de base de datos, proporcione una clave de partición al crear los contenedores.Aumentar el 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. Con un mayor rendimiento, puede evitar la limitación de velocidad y migrar en menos tiempo. Después de finalizar 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.
Habilitar la seguridad de la capa de transporte (TLS): Azure Cosmos DB tiene estrictos requisitos de seguridad y estándares. Habilite TLS cuando interactúe con su cuenta. Al usar el lenguaje de consulta cassandra (CQL) con Secure Shell, puede proporcionar información de TLS.
Opciones para migrar datos
Puede mover datos de cargas de trabajo de Cassandra existentes a Azure Cosmos DB mediante el cqlshCOPY comando o mediante Spark.
Migración de datos mediante el comando COPY de cqlsh
Advertencia
Use solo el comando CQL COPY para migrar pequeños conjuntos de datos. 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 TOcomando para exportar datos directamente desde la tabla de Cassandra de origen a un archivo .csv. Asegúrese de quecqlshestá 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 Cassandra para la API:
- 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
cqlshmediante la información de conexión de Azure Portal.Use el comando CQL
COPY FROMpara copiardata.csv. Este archivo todavía se encuentra en el directorio raíz del usuario dondecqlshestá instalado.COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
Nota:
La API para Cassandra admite la versión 4 del protocolo, que se incluye con Cassandra 3.11. Puede haber problemas si usa versiones posteriores del protocolo con nuestra API. Con una versión de protocolo posterior, el COPY FROM comando puede entrar en un bucle y devolver filas duplicadas.
Agregue protocol-version al cqlsh comando :
cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Adición de opciones de limitación de rendimiento al comando COPY de CQL
El COPY comando de cqlsh admite varios parámetros para controlar la tasa de ingesta de documentos en Azure Cosmos DB.
La configuración predeterminada del COPY comando intenta ingerir datos a un ritmo rápido. No tiene en cuenta el comportamiento de limitación de velocidad de Azure Cosmos DB. Reduzca CHUNKSIZE o INGESTRATE dependiendo del rendimiento 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
Copie datos de la API para Cassandra en un archivo de .csv local:
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;Copie datos de un archivo de .csv local en la 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 Apache Cassandra de código abierto de CQLSH COPY . Las versiones de Datastax Enterprise (DSE) de CQLSH pueden encontrarse con errores.
Migración de datos mediante Spark
Para migrar datos a la cuenta de API for Cassandra con Spark, siga estos pasos:
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.
Si tiene datos que residen en un clúster existente en máquinas virtuales de Azure o en cualquier otra nube, se recomienda usar trabajos de Spark para migrar los datos. 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 cuando se usa 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 se necesitan recursos, 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: