Tutorial: Migración de los datos a una cuenta de API para Cassandra

SE APLICA A: Cassandra

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 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 cqlshCOPY
  • 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 para Cassandra en Azure Cosmos DB, debe calcular las necesidades de rendimiento de la carga de trabajo. En general, puede comenzar con el rendimiento medio requerido por las operaciones CRUD y después incluir el rendimiento adicional necesario para las operaciones de Extracción, transformación y carga, y durante los picos. 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 realiza la estimación de tamaño de los datos para una nueva aplicación, puede asumir que los datos se distribuyen uniformemente entre las filas y calcular 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.

  • Crear tablas en la cuenta de API para Cassandra: antes de comenzar la migración de datos, cree previamente todas las tablas de Azure Portal o 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 de la duración de 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 haber completado 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, tiene una opción para 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 cqlshCOPY o con Spark.

Migración de datos mediante el comando COPY de cqlsh

El comando COPY de CQL se usa para copiar datos locales en la cuenta de API para Cassandra en Azure Cosmos DB.

Advertencia

Use solo CQL COPY para migrar conjuntos de datos pequeños. Para mover grandes conjuntos de datos, migre los datos mediante Spark.

  1. Para asegurarse de que el archivo csv contenga la estructura de archivos correcta, use el comando COPY TO 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 con las credenciales adecuadas):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. 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.

  3. Inicie sesión en cqlsh mediante la información de conexión del portal.

  4. Use el comando CQLCOPY FROM para copiar el archivo data.csv (todavía ubicado en el directorio raíz del usuario donde está instalado cqlsh):

    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 de 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 y no tiene en cuenta el comportamiento de limitación de velocidad de CosmosDB. 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 recopilació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 Enterprise Datastax (DSE) de CQLSH pueden encontrar errores.

Migración de datos mediante Spark

Siga estos pasos para migrar datos a la cuenta de API para Cassandra con Spark:

  1. Aprovisione un clúster de Azure Databricks o un clúster de Azure HDInsight.

  2. Mueva los datos al punto de conexión de destino de API para Cassandra. Consulte esta guía paso a paso para obtener información sobre la migración con Azure Databricks.

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. Para ello, debe configurar Spark como intermediario para la ingesta de una vez o la ingesta habitual. Puede acelerar la migración mediante el uso de la conectividad de Azure ExpressRoute entre el entorno local y Azure.

Migración en vivo

Cuando se requiere una migración de tiempo de inactividad cero desde un clúster nativo de Apache Cassandra, se recomienda configurar las escrituras dobles y una carga de datos en masa independiente para migrar datos históricos. Hemos hecho que implementar este patrón sea más sencillo al proporcionar un proxy de doble escritura de código abierto para permitir cambios mínimos en el código de aplicación. Consulte nuestro artículo de instrucciones sobre migración en directo con proxy de doble escritura y Apache Spark para obtener más información sobre cómo implementar este patrón.

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.

Pasos siguientes

En este tutorial, ha aprendido cómo migrar los datos a una cuenta de API para Cassandra en Azure Cosmos DB. Ahora puede conocer otros conceptos de Azure Cosmos DB: