Arquitectura Lambda

La arquitectura Lambda combina el procesamiento de datos por lotes y en flujo para proporcionar una visión precisa y de baja latencia de los datos operativos basados en el tiempo.
Origen de la arquitectura Lambda
En 2011, en su blog, Nathan Marz introdujo la idea de la arquitectura Lambda para reducir las latencias inherentes a MapReduce. El concepto original se amplió a Big Data en el artículo de Nathan y James Warren, Big Data: Principles and Best Practices of Scalable Realtime Data Systems, publicado en 2013. En 2014, Jay Kreps escribió un artículo sobre Questioning the Lambda Architecture en Rader, señalando algunas desventajas que descubrió en LinkedIn y ofreciendo alternativas. Jay propuso la arquitectura kappa, más sencilla, porque solo utiliza un enfoque de streaming.
¿Por qué es importante la arquitectura lambda?
Un enfoque basado puramente en lotes para la obtención de datos debe esperar a que un lote se complete antes de que los datos obtenidos puedan ser consultados. El procesamiento por lotes tiene la ventaja de ser eficiente en términos de eficiencia de recursos y proporciona un alto rendimiento.
El procesamiento de flujos es menos eficiente que el procesamiento por lotes, pero proporciona menos latencia porque los registros se obtienen tan pronto como se crean. La arquitectura lambda ofrece la inmediatez de los datos de flujo con el rendimiento de los lotes y añade un nivel de tolerancia a fallos al eliminar un único punto de fallo de transmisión. Los datos de origen no se modifican, por lo que siguen siendo fidedignos.
Componentes de una arquitectura lambda
A continuación se ofrece una visión general de los principales componentes de la arquitectura Lambda.
Los datos de origen
La fuente de datos brutos no cambia. Las transformaciones se aplican a una copia del original para mantener la auditabilidad. Las rutas batch y streaming utilizan el mismo conjunto de datos base.
La capa de lotes
La capa por lotes genera vistas a medida que transforma un conjunto de datos completo. Estas vistas pueden volver a calcularse en caso de errores o cambios en el código.
La capa de velocidad
La capa de velocidad utiliza el procesamiento de flujos para rellenar los huecos de tiempo mientras se ejecuta una actualización por lotes. Cuando finaliza el siguiente lote, se pueden borrar los datos anteriores. En caso de fallo, se puede transmitir todo el conjunto de datos para aumentar su disponibilidad.
La capa de servicio
La capa de servicio suele ser una base de datos que admite consultas conjuntas en las tablas de salida por lotes y por flujos para proporcionar una única vista coherente del conjunto de datos transformado. La arquitectura no dicta una tecnología específica de base de datos o sistema de archivos, siempre y cuando admita de forma transparente un conjunto de resultados unificado que haga referencia tanto a las tablas creadas por streaming como a las creadas por lotes.
Ventajas de la arquitectura Lambda
Las principales ventajas de la arquitectura lambda son:
- El usuario siempre ve un conjunto de datos completo y transformado.
- Los datos de origen son inmutables, por lo que los conjuntos de resultados siempre pueden volver a crearse a partir del origen.
- Cero retrasos con los registros, a diferencia de lo que ocurre con un enfoque por lotes.
- Los resultados intermedios pueden almacenarse, lo que facilita la depuración del código utilizándolos como pista de auditoría.
- El uso de rutas duales para obtener los datos en bruto crea una alta disponibilidad, ya que tanto la ruta por lotes como la de flujo pueden crear un conjunto de datos de destino completo si es necesario.
Los inconvenientes de la arquitectura Lambda
El principal problema de la arquitectura Lambda es la complejidad. Dos mecanismos diferentes, cada uno con su propia base de código, mueven datos de un origen a un destino que admite consultas. Una tabla está dedicada a los datos por lotes, y la otra a los datos al vapor. Las consultas deben unir estas tablas, filtrando los duplicados y haciéndolas más lentas. Las rutas de código batch y streaming necesitan aplicar cualquier transformación de datos.
Arquitectura Actian y Lambda
Actian Data Platform puede proporcionar capacidades de arquitectura Lambda utilizando una combinación de pipelines basados en streaming y batch desde el conjunto de datos de origen. La base de datos columnar Vector incorporada incluye almacenamiento para las tablas cargadas en flujo y por lotes, que pueden consultarse mediante uniones en lenguaje de consulta estructurado (SQL) para proporcionar una vista de los registros únicos de ambas tablas. Lo mejor del enfoque de Actian es que tanto los datos por lotes como los transmitidos utilizan el mismo código de transformación para garantizar resultados coherentes.