Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Migre las cargas de trabajo de Apache Cassandra a Amazon Keyspaces con AWS Glue
Creado por Nikolai Kolesnikov (AWS), Karthiga Priya Chandran (AWS) y Samir Patel (AWS)
Entorno: producción | Origen: Cassandra | Destino: Amazon Keyspaces |
Tipo R: N/D | Carga de trabajo: código abierto; todas las demás cargas de trabajo | Tecnologías: análisis; migración; sin servidor; macrodatos |
Servicios de AWS: AWS Glue; Amazon Keyspaces; Amazon S3; AWS CloudShell |
Resumen
Este patrón le muestra cómo migrar sus cargas de trabajo actuales de Apache Cassandra a Amazon Keyspaces (para Apache Cassandra) mediante CQLReplicator en AWS Glue. Puede usar CQLReplicator en AWS Glue para minimizar el retraso en la replicación que supone la migración de sus cargas de trabajo en cuestión de minutos. También aprenderá a usar un bucket de Amazon Simple Storage Service (Amazon S3) para almacenar los datos necesarios para la migración, incluidos los archivos de configuración, los scripts y los archivos de Apache Parquet
Requisitos previos y limitaciones
Requisitos previos
Clúster de Cassandra con tabla de origen
Tabla objetivo en Amazon Keyspaces para replicar la carga de trabajo
Bucket de S3 para almacenar archivos intermedios de Parquet que contienen cambios de datos graduales
Bucket de S3 para almacenar archivos de configuración de trabajos y scripts
Limitaciones
CQLReplicator en AWS Glue requiere algún tiempo para aprovisionar unidades de procesamiento de datos (DPU) para las cargas de trabajo de Cassandra. El retraso de la replicación entre el clúster de Cassandra y el espacio de claves y la tabla de destino en Amazon Keyspaces se reducirá a pocos minutos.
Arquitectura
Pila de tecnología de origen
Apache Cassandra
DataStax Servidor
ScyllaDB
Pila de tecnología de destino
Amazon Keyspaces
Arquitectura de migración
El siguiente diagrama muestra un ejemplo de arquitectura en el que un clúster de Cassandra se aloja en instancias EC2 y se distribuye en tres zonas de disponibilidad. Los nodos de Cassandra están alojados en subredes privadas.
![Diagrama de arquitectura que muestra el rol de servicio personalizado, los recursos de AWS y la VPC.](images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)
En el diagrama, se muestra el siguiente flujo de trabajo:
Un rol de servicio personalizado proporciona acceso a Amazon Keyspaces y al bucket de S3.
Un trabajo de AWS Glue lee la configuración del trabajo y los scripts del bucket de S3.
El trabajo de AWS Glue se conecta a través del puerto 9042 para leer los datos del clúster de Cassandra.
El trabajo de AWS Glue se conecta a través del puerto 9142 para escribir los datos en Amazon Keyspaces.
Herramientas
Servicios y herramientas de AWS
La interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto que permite interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de línea de comandos.
AWS CloudShell es un shell basado en navegador que puede utilizar para administrar los servicios de AWS mediante la interfaz de línea de comandos de AWS (AWS CLI) y una gama de herramientas de desarrollo preinstaladas.
AWS Glue es un servicio de ETL totalmente gestionado que le permite clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
Amazon Keyspaces (para Apache Cassandra) es un servicio de base de datos administrada que le permite migrar, ejecutar y escalar sus cargas de trabajo de Cassandra en la nube de AWS.
Código
El código de este patrón está disponible en el repositorio de CQLReplicator. GitHub
Prácticas recomendadas
Para determinar los recursos de AWS Glue necesarios para la migración, calcule el número de filas de la tabla de Cassandra de origen. Por ejemplo, 250 000 filas por 0,25 DPU (2 vCPU, 4 GB de memoria) con un disco de 84 GB.
Caliente previamente las tablas de Amazon Keyspaces antes de ejecutar CQLReplicator. Por ejemplo, ocho teselas de CQLReplicator (trabajos de AWS Glue) pueden escribir hasta 22 K de WCU por segundo, por lo que el objetivo debe precalentarse a entre 25 y 30 K de WCU por segundo.
Para habilitar la comunicación entre los componentes de AWS Glue, utilice una regla de entrada autorreferenciada para todos los puertos TCP de su grupo de seguridad.
Utilice la estrategia de tráfico incremental para distribuir la carga de trabajo de migración a lo largo del tiempo.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un espacio de claves y una tabla de destino. |
| Propietario de la aplicación, administrador de AWS, administrador de bases de datos, desarrollador de aplicaciones |
Configure el controlador de Cassandra para conectarse a Cassandra. | Utilice el siguiente script dde configuración:
Nota: el anterior script usa el conector Spark Cassandra. Para obtener más información, consulte la configuración de referencia de Cassandra. | Administrador de base de datos |
Configure el controlador de Cassandra para conectarse a Amazon Keyspaces. | Utilice el siguiente script dde configuración:
Nota: el anterior script usa el conector Spark Cassandra. Para obtener más información, consulte la configuración de referencia de Cassandra | Administrador de base de datos |
Cree un rol de IAM para el trabajo de AWS Glue. | Cree un nuevo rol de servicio de AWS denominado Nota: | AWS DevOps |
Descargue CQLReplicator en AWS. CloudShell | Descargue el proyecto en su carpeta de inicio ejecutando el siguiente comando:
| |
Modifique los archivos de configuración de referencia. | Copie | AWS DevOps |
Inicie el proceso de migración. | El siguiente comando inicializa el entorno CQLReplicator. La inicialización implica copiar los artefactos.jar y crear un conector de AWS Glue, un bucket de S3, un trabajo de AWS Glue, el
Este script incluye los siguientes parámetros:
| AWS DevOps |
Valide la implementación. | Tras ejecutar el comando anterior, la cuenta de AWS debe contener lo siguiente:
| AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Inicie el proceso de migración. | Para utilizar CQLReplicator en AWS Glue, debe utilizar el Para replicar la carga de trabajo del clúster de Cassandra a Amazon Keyspaces, ejecute el siguiente comando:
El espacio de claves y la tabla de origen se encuentran Para replicar las actualizaciones, agréguelas | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Valide las filas de Cassandra migradas durante la fase de migración histórica. | Para obtener el número de filas replicadas durante la fase de relleno, ejecute el siguiente comando:
| AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Utilice el | Para detener el proceso de migración correctamente, ejecute el siguiente comando:
Para detener el proceso de migración de forma inmediata, utilice la consola AWS Glue. | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elimine los recursos desplegados. | El siguiente comando eliminará el trabajo de AWS Glue, el conector, el bucket de S3 y la tabla de Keyspaces:
| AWS DevOps |
Solución de problemas
Problema | Solución |
---|---|
Los trabajos de AWS Glue fallaron y devolvieron un error de memoria insuficiente (OOM). |
|
Recursos relacionados
Información adicional
Consideraciones sobre la migración
Puede usar AWS Glue para migrar la carga de trabajo de Cassandra a Amazon Keyspaces y, al mismo tiempo, mantener por completo la funcionalidad de sus bases de datos de origen de Cassandra durante el proceso de migración. Una vez completada la replicación, puede transferir sus aplicaciones a Amazon Keyspaces con un retraso de replicación mínimo (inferior a minutos) entre el clúster de Cassandra y Amazon Keyspaces. Para mantener la coherencia de datos, también puede seguir un proceso similar para replicar los datos de nuevo en el clúster de Cassandra desde Amazon Keyspaces.
Cálculos de unidades de escritura
Pongamos que, por ejemplo, desea escribir 500.000.000 con un tamaño de fila de 1 KiB durante una hora. El número total de unidades de escritura (WCU) de Amazon Keyspaces que necesita se basa en este cálculo:
(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required
La tasa de 1 hora es de 69.444 WCU por segundo, pero puede añadir algo de capacidad adicional. Por ejemplo, 69,444 * 1.10 = 76,388 WCUs
tiene una capacidad adicional del 10 por ciento.
Cree un espacio de claves mediante CQL
Para crear un espacio de claves con CQL, ejecute los siguientes comandos:
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)