Arquitectura lambda big data

Inicio » Arquitectura lambda big data

Implementación de la arquitectura lambda

Todos los artículos publicados por MDPI están disponibles inmediatamente en todo el mundo bajo una licencia de acceso abierto. No se requiere ningún permiso especial para reutilizar todo o parte del artículo publicado por MDPI, incluidas las figuras y tablas. En el caso de los artículos publicados bajo una licencia de acceso abierto Creative Common CC BY, cualquier parte del artículo puede reutilizarse sin permiso siempre que se cite claramente el artículo original.

Los Feature Papers representan la investigación más avanzada con un potencial significativo de alto impacto en el campo. Los artículos de fondo se presentan por invitación individual o por recomendación de los editores científicos y se someten a una revisión por pares antes de su publicación.

El artículo de fondo puede ser un artículo de investigación original, un estudio de investigación sustancial y novedoso que a menudo incluye varias técnicas o enfoques, o un artículo de revisión exhaustivo con actualizaciones concisas y precisas sobre los últimos avances en el campo que revisa sistemáticamente los avances más interesantes de la literatura científica. Este tipo de artículo ofrece una perspectiva sobre futuras direcciones de investigación o posibles aplicaciones.

Arquitectura lambda y kappa

Estoy tratando de implementar una arquitectura Lambda utilizando las siguientes herramientas: Apache Kafka para recibir todos los datapoints, Spark para el procesamiento por lotes (Big Data), Spark Streaming para tiempo real (Fast Data) y Cassandra para almacenar los resultados.

Además, todos los datapoints que recibo están relacionados con una sesión de usuario, y por lo tanto, para el procesamiento por lotes sólo me interesa procesar los datapoints una vez que la sesión termina. Entonces, como estoy usando Kafka, la única manera de resolver esto (asumiendo que todos los datapoints están almacenados en el mismo topic) es que el batch busque todos los mensajes en el topic, y luego ignore los que corresponden a sesiones que aún no han terminado.

En cuanto a tu problema con las sesiones, ya que lo estás haciendo en modo batch, ¿por qué no ingerir los datos de Kafka en HDFS o Cassandra y luego escribir allí las consultas para las sesiones completas? Podrías utilizar la “conexión directa” de Spark Streaming con Kafka para hacer esto.

Los puntos principales de Spark Streaming son que obtienes una latencia mínima de 100 ms para los datos de streaming, así como otra gran queja para mí, el desorden del orden de los datos consumidos por el trabajo de streaming. Eso con una combinación de posibles rezagos resulta en una completa falta de confianza en que estoy procesando los datos en un orden al menos parcial (a mi entender, al menos). Storm supuestamente resuelve estos problemas, pero no puedo garantizarlo ya que no lo he utilizado.

Arquitectura lambda net

Estoy tratando de implementar una Arquitectura Lambda utilizando las siguientes herramientas: Apache Kafka para recibir todos los datapoints, Spark para el procesamiento por lotes (Big Data), Spark Streaming para tiempo real (Fast Data) y Cassandra para almacenar los resultados.

Además, todos los datapoints que recibo están relacionados con una sesión de usuario, y por lo tanto, para el procesamiento por lotes sólo me interesa procesar los datapoints una vez que la sesión termina. Entonces, como estoy usando Kafka, la única forma de resolver esto (asumiendo que todos los datapoints están almacenados en el mismo topic) es que el batch busque todos los mensajes en el topic, y luego ignore los que corresponden a sesiones que aún no han terminado.

En cuanto a tu problema con las sesiones, ya que lo estás haciendo en modo batch, ¿por qué no ingerir los datos de Kafka en HDFS o Cassandra y luego escribir allí las consultas para las sesiones completas? Podrías utilizar la “conexión directa” de Spark Streaming con Kafka para hacer esto.

Los puntos principales de Spark Streaming son que obtienes una latencia mínima de 100 ms para los datos de streaming, así como otra gran queja para mí, el desorden del orden de los datos consumidos por el trabajo de streaming. Eso con una combinación de posibles rezagos resulta en una completa falta de confianza en que estoy procesando los datos en un orden al menos parcial (a mi entender, al menos). Storm supuestamente resuelve estos problemas, pero no puedo garantizarlo ya que no lo he utilizado.

Arquitectura kappa

La arquitectura Lambda es una arquitectura de procesamiento de datos diseñada para manejar cantidades masivas de datos aprovechando tanto los métodos de procesamiento por lotes como los de flujo. Este enfoque de la arquitectura intenta equilibrar la latencia, el rendimiento y la tolerancia a los fallos utilizando el procesamiento por lotes para proporcionar vistas completas y precisas de los datos por lotes, mientras que simultáneamente utiliza el procesamiento de flujos en tiempo real para proporcionar vistas de los datos en línea. Las dos salidas de las vistas pueden unirse antes de la presentación. El auge de la arquitectura lambda está correlacionado con el crecimiento de los big data, la analítica 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 de sólo adición que sirve como sistema de registro[2]: 32 Está pensada para ingerir y procesar eventos con marca de tiempo que se añaden a los eventos existentes en lugar de sobrescribirlos. El estado se determina a partir de la ordenación natural de los datos basada en el tiempo.

La arquitectura Lambda describe un sistema que consta de tres capas: procesamiento por lotes, procesamiento rápido (o en tiempo real) y una capa de servicio para responder a las consultas[3]: 13 Las capas de procesamiento ingieren desde una copia maestra inmutable de todo el conjunto de datos. Este paradigma fue descrito por primera vez por Nathan Marz en una entrada de su blog titulada “How to beat the CAP theorem” (Cómo vencer el teorema CAP) en la que originalmente lo denominó “arquitectura de lotes/tiempo real”[4].

Ir arriba