Arquitectura Lambda: Combinando lo mejor de dos mundos

Publicado en

A alto nivel hay dos tipos de procesamiento de datos: el primero es el procesamiento de datos en modo batch, el segundo es en modo stream o tiempo (semi)-real. Elaborando un poco más sobre esta diferencia, el procesamiento batch es aquel que nos permite procesar volúmenes de datos en tiempos espaciados (ej. cada 15 minutos, cada 3 horas, o diario). Mientras que el modo stream es aquel que nos permite procesar datos casi al instante en que estos son producidos (ej. cada 100 milisegundos o cada segundo).

Para entender por qué esta diferencia es importante, podemos utilizar ejemplos de la vida real que la hacen más evidente. Por ejemplo, si una empresa quiere entender al final de cada trimestre cuál fue la tendencia de venta de un producto, para tomar decisiones, es necesario almacenar datos sobre las transacciones de venta del producto a lo largo del mismo periodo para luego realizar el procesamiento. Si el volumen de datos es alto, este procesamiento podría tomar varios minutos o incluso horas, y en este caso en particular es probable que quienes tomen decisiones estén dispuestos a esperar ese tiempo para poder hacerlo.

Sin embargo en otros casos, la espera para tomar decisiones puede ser costosa, y por lo tanto se necesita hacerlo de manera casi inmediata. Por ejemplo, si se desea bloquear el uso de una tarjeta de crédito que aparenta ser fraudulenta, no podemos esperar varios minutos ya que el daño realizado por ese tipo de transacciones puede ser elevado. En estos casos es mejor tomar decisiones casi al instante en que la información de una posible transacción fraudulenta esté disponible.

Cuando los volúmenes de datos en cualquiera de estos casos son muy altos —es decir, cuando afrontamos temas de big data como es el caso hoy para muchas empresas operando en la era digital, y como lo será en los próximos años con el internet de las cosas— la complejidad y el costo de implementar sistemas de información que nos permitan manejar ambos tipos de procesamiento también incrementa. Es ahí en donde nace el concepto de la Arquitectura Lambda.

En una arquitectura lambda la idea es implementar sistemas de información que combinan ambas modalidades de procesamiento de datos: batch y stream. Esto nos da lo mejor de dos mundos, ya que el modo batch nos brinda un alcance completo y confiable mientras que el modo stream nos da los datos en línea para decisiones instantáneas.

Figura 1. Arquitectura Lambda.

La figura 1 muestra un modelo de cómo funciona la arquitectura lambda. Los datos que entran al sistema se despachan tanto a la capa batch como a la capa de velocidad (speed). La capa batch escribe los datos al master data set y prepara las vistas batch, pasándolas a la capa de servidor. Esta última se encarga de indexar las vistas batch de manera que pueda responder a búsquedas con muy baja latencia. El problema es que el proceso de escribir datos y luego indexarlos es lento, por lo que éstos no están disponibles de forma instantánea; es aquí donde entra en acción el rol de la capa de velocidad; que se dedica a exponer solamente los datos más recientes, sin preocuparse por escribirlos a un registro permanente. El resultado de cualquier búsqueda puede conjuntar datos provenientes tanto de vistas de la capa batch como de la capa de velocidad.

Tecnologías involucradas

En cada una de las capas de esta arquitectura se utilizan tecnologías especializadas para cada propósito. Aunque es posible utilizar distintas opciones, una opción popular es utilizar Apache Sqoop + HDFS + Hive para capturar, almacenar y procesar datos en forma batch, y Apache Kafka + HBase + Spark para capturar, almacenar y procesar datos en forma stream. Existen proveedores —como Cloudera, donde yo colaboro— que ofrecen productos que integran estas herramientas y permiten fácilmente incorporar arquitecturas lambda.

Referencias:

  1. http://lambda-architecture.net

Bio

Benjamin Vera-Tudela es Senior Big Data Architect en Cloudera, compañía líder en el desarrollo y comercialización de tecnologías abiertas para big data.