La arquitectura Lambda es una arquitectura de procesamiento de datos diseñada para manejar cantidades masivas de datos aprovechando los métodos de procesamiento por lotes y de flujo . Este enfoque de la arquitectura intenta equilibrar la latencia , el rendimiento y la tolerancia a fallas mediante el uso del procesamiento por lotes para proporcionar vistas completas y precisas de los datos por lotes, al tiempo que utiliza el procesamiento de secuencias en tiempo real para proporcionar vistas de datos en línea. Las dos salidas de vista se pueden unir antes de la presentación. El auge de la arquitectura lambda se correlaciona con el crecimiento de big data , análisis en tiempo real y el impulso para mitigar las latencias de map-reduce. [1]
La arquitectura Lambda depende de un modelo de datos con una fuente de datos inmutable y solo para agregar que sirve como un sistema de registro. [2] : 32 Está diseñado para ingerir y procesar eventos con marca de tiempo que se agregan a eventos existentes en lugar de sobrescribirlos. El estado se determina a partir del orden natural de los datos en función del tiempo.
Descripción general
La arquitectura Lambda describe un sistema que consta de tres capas: procesamiento por lotes, procesamiento de velocidad (o en tiempo real) y una capa de servicio para responder a las consultas. [3] : 13 Las capas de procesamiento ingieren una copia maestra inmutable de todo el conjunto de datos. Este paradigma fue descrito por primera vez por Nathan Marz en una publicación de blog titulada "Cómo vencer el teorema CAP" en el que originalmente lo denominó "arquitectura por lotes / en tiempo real". [4]
Capa de lote
La capa de lotes precalcula los resultados mediante un sistema de procesamiento distribuido que puede manejar grandes cantidades de datos. La capa por lotes tiene como objetivo una precisión perfecta al poder procesar todos los datos disponibles al generar vistas. Esto significa que puede corregir cualquier error volviendo a calcular basándose en el conjunto de datos completo y luego actualizando las vistas existentes. La salida generalmente se almacena en una base de datos de solo lectura, y las actualizaciones reemplazan por completo las vistas precalculadas existentes. [3] : 18
Apache Hadoop es el sistema de procesamiento por lotes líder que se utiliza en la mayoría de las arquitecturas de alto rendimiento. [5] En esta función también se utilizan nuevas bases de datos relacionales, elásticas y masivamente paralelas como Snowflake , Redshift, Synapse y Big Query.
Capa de velocidad
La capa de velocidad procesa los flujos de datos en tiempo real y sin los requisitos de corrección o integridad. Esta capa sacrifica el rendimiento, ya que tiene como objetivo minimizar la latencia al proporcionar vistas en tiempo real de los datos más recientes. Esencialmente, la capa de velocidad es responsable de llenar la "brecha" causada por el retraso de la capa de lote al proporcionar vistas basadas en los datos más recientes. Las vistas de esta capa pueden no ser tan precisas o completas como las que eventualmente produce la capa por lotes, pero están disponibles casi inmediatamente después de recibir los datos y pueden reemplazarse cuando las vistas de la capa por lotes para los mismos datos estén disponibles. [3] : 203
Las tecnologías de procesamiento de transmisión que se usan normalmente en esta capa incluyen Apache Storm , SQLstream , Apache Samza , Apache Spark y Azure Stream Analytics . La salida normalmente se almacena en bases de datos NoSQL rápidas. [6] [7]
Capa de servicio
La salida de las capas de lote y velocidad se almacena en la capa de servicio, que responde a las consultas ad-hoc devolviendo vistas precalculadas o construyendo vistas a partir de los datos procesados.
Ejemplos de tecnologías utilizadas en la capa de servicio incluyen Druid , que proporciona un solo grupo para manejar la salida de ambas capas. [8] tiendas dedicadas usados en la capa que sirve incluyen Apache Cassandra , Apache HBase , Azure Cosmos DB , MongoDB , VoltDB o Elasticsearch para la salida de velocidad-capa, y elefante DB , Apache impala , SAP HANA o Apache colmena para la salida por lotes-capa. [2] : 45 [6]
Optimizaciones
Para optimizar el conjunto de datos y mejorar la eficiencia de las consultas, se ejecutan varias técnicas de acumulación y agregación sobre datos sin procesar, [8] : 23 mientras que se emplean técnicas de estimación para reducir aún más los costos de cálculo. [9] Y aunque se requiere un costoso recálculo completo para la tolerancia a fallas, se pueden agregar selectivamente algoritmos de cómputo incremental para aumentar la eficiencia, y técnicas como el cómputo parcial y las optimizaciones del uso de recursos pueden ayudar efectivamente a reducir la latencia. [3] : 93,287,293
Arquitectura lambda en uso
Metamarkets, que proporciona análisis para empresas en el espacio publicitario programático, emplea una versión de la arquitectura lambda que utiliza Druid para almacenar y servir tanto los datos transmitidos como los procesados por lotes. [8] : 42
Para ejecutar análisis en su almacén de datos publicitarios, Yahoo ha adoptado un enfoque similar, utilizando también Apache Storm , Apache Hadoop y Druid . [10] : 9,16
El proyecto Netflix Suro tiene rutas de procesamiento de datos independientes, pero no sigue estrictamente la arquitectura lambda, ya que las rutas pueden estar destinadas a diferentes propósitos y no necesariamente a proporcionar el mismo tipo de vistas. [11] No obstante, la idea general es hacer que los datos de eventos seleccionados en tiempo real estén disponibles para consultas con una latencia muy baja, mientras que todo el conjunto de datos también se procesa a través de un proceso por lotes. Este último está destinado a aplicaciones que son menos sensibles a la latencia y requieren un tipo de procesamiento de reducción de mapas.
Crítica
La crítica de la arquitectura lambda se ha centrado en su complejidad inherente y su influencia limitante. Los lados del lote y de la transmisión requieren cada uno una base de código diferente que se debe mantener y sincronizar para que los datos procesados produzcan el mismo resultado en ambas rutas. Sin embargo, intentar abstraer las bases del código en un solo marco deja fuera de alcance muchas de las herramientas especializadas en los ecosistemas por lotes y en tiempo real. [12]
En una discusión técnica sobre los méritos de emplear un enfoque de transmisión pura, se señaló que el uso de un marco de transmisión flexible como Apache Samza podría proporcionar algunos de los mismos beneficios que el procesamiento por lotes sin latencia. [13] Un marco de transmisión de este tipo podría permitir la recopilación y el procesamiento de ventanas de datos arbitrariamente grandes, acomodar el bloqueo y controlar el estado.
Ver también
- Procesamiento de flujo de eventos
Referencias
- ^ Schuster, Werner. "Nathan Marz sobre tormenta, inmutabilidad en la arquitectura Lambda, Clojure" . www.infoq.com . Entrevista a Nathan Marz, 6 de abril de 2014
- ↑ a b Bijnens, Nathan. "Una arquitectura en tiempo real usando Hadoop y Storm" . 11 de diciembre de 2013.
- ^ a b c d Marz, Nathan; Warren, James. Big Data: Principios y mejores prácticas de sistemas de datos escalables en tiempo real . Publicaciones Manning, 2013.
- ^ Marz, Nathan. "Cómo vencer el teorema CAP" . 13 de octubre de 2011.
- ^ Kar, Saroj. "El sector Hadoop tendrá un crecimiento anual del 58% para 2013-2020". Archivado el 26 de agosto de 2014 en archive.today , 28 de mayo de 2014. Cloud Times .
- ^ a b Kinley, James. "La arquitectura Lambda: principios para la arquitectura de sistemas de Big Data en tiempo real" , consultado el 26 de agosto de 2014.
- ^ Ferrera Bertran, Pere. "Arquitectura Lambda: un estado de la técnica" . 17 de enero de 2014, Datasalt.
- ^ a b c Yang, Fangjin y Merlino, Gian. "Analítica en tiempo real con tecnologías de código abierto" . 30 de julio de 2014.
- ^ Ray, Nelson. "El arte de aproximar distribuciones: histogramas y cuantiles a escala" . 12 de septiembre de 2013. Metamarkets.
- ^ Rao, Supreeth; Gupta, Sunil. "Analítica interactiva en el tiempo humano" . 17 de junio de 2014
- ^ Bae, Jae Hyeon; Yuan, Danny; Tonse, Sudhir. "Announcing Suro: Backbone of Netflix's Data Pipeline" , Netflix , 9 de diciembre de 2013
- ^ Kreps, Jay. "Cuestionando la Arquitectura Lambda" . radar.oreilly.com . Oreilly . Consultado el 15 de agosto de 2014 . CS1 maint: parámetro desalentado ( enlace )
- ^ Hacker News obtenido el 20 de agosto de 2014
enlaces externos
- Repositorio de información sobre Lambda of Architecture