Kinesis, EMR, Glue
Clase 62 de 69 • Curso de AWS Certified Solutions Architect Associate
Resumen
La ingeniería de datos en la nube ha revolucionado la forma en que las empresas manejan flujos masivos de información. AWS ofrece un conjunto robusto de servicios diseñados específicamente para el procesamiento de datos en tiempo real e históricos, permitiendo a las organizaciones detectar fraudes, realizar análisis complejos y tomar decisiones basadas en datos con una velocidad y eficiencia sin precedentes. En este contenido, exploraremos los principales servicios de AWS para el manejo de flujos de datos en tiempo real y procesamiento de big data.
¿Cómo funciona Amazon Kinesis para el procesamiento de datos en tiempo real?
Amazon Kinesis representa la solución principal de AWS para la gestión de flujos de datos en tiempo real. Este servicio permite recolectar, procesar y analizar datos de streaming con capacidad para manejar volúmenes masivos de información. Kinesis se divide en varios subservicios que cumplen funciones específicas dentro del ecosistema de procesamiento de datos:
Kinesis Data Streams
Kinesis Data Streams es el componente fundamental que permite la recolección de gigabytes de datos por segundo desde múltiples fuentes. Este servicio está diseñado para recibir datos masivos y redireccionarlos a otras herramientas de procesamiento como AWS Lambda, Apache Flink y otros servicios de análisis.
Para crear un Data Stream:
- Seleccionamos el nombre del stream (por ejemplo, "test")
- Elegimos el tipo de capacidad:
- Bajo demanda: Escala automáticamente según el volumen de datos
- Provisionado: Configuramos una capacidad fija basada en un estimado conocido
Es importante notar que los datos en Data Streams se almacenan por defecto durante 24 horas, ya que su función principal es transportar datos hacia otros servicios para su procesamiento, no almacenarlos permanentemente.
La arquitectura de Kinesis Data Streams se basa en:
- Productores: Generan los datos que fluyen hacia el stream (aplicaciones, servidores, dispositivos)
- Consumidores: Procesan los datos del stream (puede ser Apache Flink, Data Firehose u otros servicios personalizados)
Amazon Data Firehose (anteriormente Kinesis Data Firehose)
Este servicio administrado permite entregar datos de streaming en tiempo real a destinos específicos. Después de que Kinesis Data Streams recolecta los datos, Firehose los puede redirigir en lotes a servicios como:
- Amazon S3
- Amazon Redshift
- Amazon OpenSearch
- Servicios de terceros como Datadog, Elasticsearch, Honeycomb
- Endpoints HTTP personalizados
- Snowflake
- Splunk
Al configurar Data Firehose, podemos:
- Seleccionar la fuente de datos (como un Data Stream)
- Elegir un destino para los datos
- Configurar transformaciones de datos (opcional) usando Lambda
- Establecer parámetros de entrega y configuraciones adicionales
Entre las capacidades importantes de Firehose están:
- Transformación de datos en tránsito mediante funciones Lambda
- Monitoreo en tiempo real a través de CloudWatch
- Opciones de respaldo para evitar pérdida de datos
- Cifrado del lado del servidor mediante KMS
- Funcionalidades de prueba con datos demo
Amazon Managed Service for Apache Flink
Este servicio ofrece una versión administrada de Apache Flink, una solución open source ampliamente utilizada para el procesamiento de streams de datos. La ventaja principal es que AWS administra la infraestructura, eliminando la necesidad de mantener servidores, actualizaciones y configuraciones complejas.
Es particularmente útil para empresas que ya utilizaban Apache Flink en sus entornos on-premise y desean migrar a la nube sin rediseñar completamente sus arquitecturas existentes.
¿Qué capacidades ofrece Amazon EMR para el procesamiento de big data?
Amazon EMR (Elastic MapReduce) es un servicio poderoso diseñado para ejecutar aplicaciones de procesamiento de big data. Sus principales características incluyen:
- Procesamiento ETL a gran escala para transformar grandes volúmenes de datos
- Análisis de logs masivos
- Implementación de workflows de machine learning
- Indexación y búsqueda de datos
EMR puede configurarse de tres formas:
- Cluster basado en instancias EC2
- Cluster en EKS (Elastic Kubernetes Service)
- Versión serverless que elimina la necesidad de configurar y escalar manualmente
Al crear un cluster EMR basado en EC2, podemos:
- Seleccionar la versión de EMR
- Elegir frameworks de big data preconfigurados como Spark, Flink, Hadoop, HBase o Presto
- Configurar tipos de instancias optimizadas para big data
- Estructurar el cluster con diferentes tipos de nodos:
- Nodo maestro: Orquesta el cluster
- Nodos core: Dirigen las tareas
- Nodos task: Ejecutan el procesamiento real de los datos
EMR se integra perfectamente con otros servicios de AWS como S3 para almacenamiento de datos, Glue para catálogos de metadatos, y diversos servicios de seguridad y redes.
¿Cómo complementa AWS Glue el ecosistema de procesamiento de datos?
AWS Glue representa la solución serverless para procesamiento ETL de AWS. Este servicio permite:
- Crear y ejecutar jobs ETL sin preocuparse por la infraestructura subyacente
- Utilizar notebooks interactivos basados en Python y Spark para desarrollar procesos de transformación
- Aprovechar bibliotecas populares como Pandas para manipulación de datos
Glue se integra estrechamente con los demás servicios del ecosistema de datos de AWS, ofreciendo una experiencia más orientada al desarrollo y menos a la administración de infraestructura.
¿Cómo elegir la solución adecuada para detección de fraude en tiempo real?
Considerando el caso de uso inicial sobre una empresa que necesita detectar fraude en tiempo casi real y ejecutar análisis históricos diarios, la arquitectura ideal combinaría:
-
Kinesis Data Streams: Para ingerir y procesar eventos en milisegundos, permitiendo el bloqueo de transacciones fraudulentas en tiempo real.
-
Amazon Data Firehose: Para entregar los datos a un bucket S3, almacenándolos en formato columnar y particionado.
-
AWS Lambda: Conectada a Kinesis Data Streams para ejecutar algoritmos de detección de fraude en tiempo real.
-
Amazon S3: Como almacenamiento persistente de datos en crudo.
-
Amazon EMR o AWS Glue: Para ejecutar análisis históricos diarios sobre los datos almacenados.
Esta arquitectura permite cumplir con todos los requisitos: procesamiento en milisegundos, almacenamiento en S3 en formato columnar y particionado, y mínima administración de infraestructura gracias al enfoque serverless o administrado de los servicios.
Los servicios de manejo de datos en tiempo real de AWS ofrecen soluciones robustas y flexibles para arquitecturas modernas que requieren respuestas inmediatas y análisis profundos. La combinación adecuada de estos servicios permite diseñar sistemas que satisfacen tanto necesidades operativas como analíticas con un equilibrio óptimo entre rendimiento y costo.
¿Qué experiencia tienes con estos servicios de AWS para el procesamiento de datos en tiempo real? ¿Has implementado alguna arquitectura similar para casos de uso de detección de fraude u otros escenarios que requieran respuestas inmediatas? Comparte tus experiencias en los comentarios.