La mayor parte de la información que se produce hoy en día se hace de forma continua (sensores, transacciones, interacciones, actividad de usuarios...). Dar una respuesta rápida al procesamiento Big Data se está convirtiendo en algo cada vez más importante.

La forma más común de analizar toda esta información es la de persistirla en un almacenamiento estable (HDFS, DBMS...) para posteriormente analizarla periódicamente mediante procesamiento por lotes (Batch).

La característica principal que aportan los motores de procesamiento en streaming es que son capaces de analizar esta información conforme va llegando. Consideramos tiempo real al procesamiento en streaming de datos en el mínimo tiempo posible para hacer una analitica de la información procesada.

Entre estas nuevas herramientas que han surgido destacan Samza (desarrollada por LinkedIn), Storm o Flink. Este artículo se va a centrar en explicar qué está detrás de Flink, cómo y dónde surgió, y cómo podemos usarlo en proyectos que requieran tiempos de respuesta menores.

¿Cuáles son los orígenes de Flink?

El proyecto Flink comenzó como una colaboración de varias universidades europeas en un proyecto de investigación llamado “Stratosphere: Information Management on the Cloud”.

Flink es un fork de este proyecto y fue en marzo de 2014 cuando pasó a formar parte de Apache Incubator. Diciembre de 2014 fue una fecha clave en este proyecto porque fue aceptado como Top-Level project de Apache. Hoy en día el framework está soportado y desarrollado por la start-up Data Artisans.

Apache Flink es una plataforma de código abierto para el procesamiento en streaming de datos escalables y procesamiento por lotes. Apache Flink no es otro framework análitico más para Big Data. Su diseño incluye muchas innovaciones técnicas y una visión diferente que lo distingue de los demás.

¿Por qué usar Flink?

El diseño original de Flink se basa en conceptos de MapReduce, MPP Database (Massively Parallel Processing) y sistemas de flujo de datos. Flink puede trabajar de forma independiente de tecnologías existentes como Hadoop, pero puede ejecutarse por encima de HDFS y YARN.

Así, el procesamiento en streaming permite simplificar la infraestructura, minimizando el número de componentes que deben ser mantenidos y orquestados en nuestra arquitectura.

Apache Flink incorpora las siguientes características principales:

Los sistemas anteriores habían enfocado el problema del procesamiento en streaming de una manera diferente. Apache Storm fue pionero en tiempo real utilizando los procesos como Streaming Puro, hizo para el procesamiento en tiempo real lo que Hadoop hizo para el procesamiento por lotes.

Apache Spark encontró una forma inteligente de hacer tiempo real usando una aproximación mediante micro-batching. Apache Flink consigue streaming puro implementando características como procesamiento en memoria, soporte nativo para iteraciones, optimización automática de procesos y soporte avanzado de ventanas de tiempo.

La siguiente gráfica muestra las mejoras de rendimiento con respecto a Apache Storm:

¿Cómo de diferente es el uso de Micro-Batching y Streaming puro? Con Streaming puro las entradas llegan como registros en una secuencia única y la salida es necesaria tan rápido como sea posible. Con micro-batching la entrada se divide en lotes (batches) por número de registros o tiempo.

Casos de Uso

Después de ver todas las características de Flink, ¿para qué tipo de proyectos encaja? ¿cómo podríamos usarlo en nuestros proyectos? ¿cómo podemos sacar el mayor rendimiento?

Por ejemplo, podemos implementar sistemas distribuidos eficientes que respondan rápidamente a preguntas computacionalmente complejas (machine learning, estadísticas...), implementar procesos de limpieza y pre-filtrado sobre cantidades ingentes de información, detectar anomalías e implementar sistemas tiempo real de monitorización o alertas, proyectos de IOT, etc.

Conclusiones

¿Necesitas tiempo de respuesta muy rápidos o mostrar datos en tiempo real? Quizás las herramientas basadas en micro-batching no se ajusten a tus necesidades. Flink nos ofrece una nueva forma de procesar en tiempo real para obtener una salida más instantánea.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.