Paradigmas BigData: El procesamiento en Tiempo Real. Algunas tecnologías.

09:15

Seguimos con esta serie de "paradigmas" en el mundo #bigdata

Hoy voy a hablar algo sobre tratamiento de datos en Tiempo Real, que hay detrás de este concepto y algunas cosillas de las que me he ido desmitificando. Lets GO!


A continuación tenéis la lista de Post:

- Paradigmas BigData: El procesamiento Batch
- Paradigmas BigData: El procesamiento Real Time
- Paradigmas BigData: Arquitectura Lambda

Antes de comenzar dejar claro con qué queremos decir cuando hablamos de "Tiempo Real" en #bigdata :

Con Tiempo Real nos referimos al procesamiento en streaming de datos en tiempo muy pequeños que permiten su tratamiento analítico (o de parte de ellos).

Una vez dicho esto, si alguien os dice que eso se hace instantáneamente, dudad hermanos.

He tocado alguna de las tecnologías que voy a comentar hoy, que creo que representan bien el escenario tecnológico de tratamiento de datos en Tiempo Real, aunque por supuesto hay muchas mas.

Flume

Allá por el año 2010 se Cloudera presentó Flume, programa para tratamiento e ingesta de datos masivo. Esto daba la posibilidad de crear desarrollos complejos que permitieran el tratamiento de datos masivos creados en Tiempo Real.

En Real Time se utiliza en la etapa de Obtención de Datos (para conectarnos a fuentes de datos Online).

Su arquitectura es sencilla, pues tiene tres componentes principales, muy configurables:

Source: Fuente de origen de los datos
Channel: la vía por donde se tratarán los datos
Sink: persistencia/movimiento de los datos

Flume es sencillito apriori, el problema es cuando quieres utilizarlo para obtener datos de manera paralela (o multiplexada) y además te ves en la necesidad de crear tus propios Sinks, o tus propios interceptores. Entonces la cosa cambia y hay que dedicarle algo más de tiempo.

Muy recomendada como ayuda|compañero|alternativa a herramientas como Kettle.

Kafka

Sencillamente es un servicio de commit log, particionado, replicado y distribuido.

En su arquitectura encontramos que disponemos de un modelo Productor/Consumidor, cuyos mensajes se pueden categorizar en algo llamado topics y que funciona como si fuera un cluster.

Se suele utilizar como gestor de colas.

Se utiliza en la etapa de Almacenamiento de Datos.


Storm

Es un sistema de computación distribuida y escalable para procesamiento de datos en Tiempo Real y realiza en Tiempo Real, aquello que el Hadoop|Spark realizan en Procesamiento Batch.

Se compone de tres elementos, englobados en Topology (cada nodo contiene spouts y bolts, y entre ellos hay streams de datos):

Spout: fuente de datos en stream. Simplemente lee los datos de la fuente de origen y los emite a modo de stream.
Bolt: es la unidad de proceso. Lee datos de múltiples streams, permitiendo el tratamiento de los datos y posibilitando emitir de nuevo streams.
Stream: es una secuencia de tuplas sin límites. Las tuplas pueden contener objetos serializables.

En Storm, tenemos tres demonios principales:

Nimbus: sería como el JobTracker en Hadoop
Supervisor: el TaskTracker de Hadoop
Topology: el Job de Hadoop

Hay mucha magia negra con esto y haré algún post técnico en el futuro.

Utilizado en la etapa de Análisis de Datos.

Por tanto, tendríamos un ejemplo de tecnologías en Tiempo Real utilizando tecnologías #bigdata :

Imaginemos que queremos capturar el Log de una web y tratarlo en tiempo real. Una arquitectura sería la siguiente:

Flume (vamos obteniendo datos de diversas fuentes) > Kafka (encolamos) > Storm (analizamos)

Nos vemos en la próxima ;)

You Might Also Like

0 comentarios

Sé respetuoso/a, en este blog caben todo tipo de opiniones con respeto y serenidad.

statistics :: ヽ(*・ω・)ノ

Contact Form :: (」゜ロ゜)」