¿Qué es Apache Flink?
Apache Flink es un motor distribuido de código abierto para el procesamiento con estado de conjuntos de datos ilimitados (secuencias) y limitados (lotes). Las aplicaciones de procesamiento de secuencias están diseñadas para ejecutarse de forma continua, con un tiempo de inactividad mínimo, y procesar los datos a medida que se ingieren. Apache Flink está diseñado para el procesamiento de baja latencia, la realización de cálculos en memoria, la alta disponibilidad, la eliminación de puntos únicos de error y la escalabilidad horizontal.
Las características de Apache Flink incluyen la administración avanzada del estado con garantías de consistencia únicas, la semántica del procesamiento en tiempo de eventos con un sofisticado manejo de datos desordenado y tardío. El desarrollo de Apache Flink se centró en la transmisión y ofrece una interfaz de programación unificada para el procesamiento de flujos y lotes.
¿Por qué usaría Apache Fink?
Apache Flink se utiliza para crear muchos tipos diferentes de aplicaciones de transmisión y por lotes, debido a su amplio conjunto de características.
Algunos de los tipos más comunes de aplicaciones basadas en Apache Flink son los siguientes:
- Aplicaciones basadas en eventos, que incorporan eventos de uno o más flujos de eventos y ejecutan cómputos, actualizaciones de estado o acciones externas. El procesamiento con estado permite implementar la lógica más allá de la transformación de un solo mensaje, donde los resultados dependen del historial de eventos incorporados.
- Aplicaciones de análisis de datos, que extraen información y conocimientos de los datos. Tradicionalmente, se ejecuta mediante la consulta de conjuntos de datos finitos y se vuelven a ejecutar las consultas o se modifican los resultados para incorporar nuevos datos. Con Apache Flink, el análisis se puede ejecutar mediante la continua actualización, la transmisión de consultas o el procesamiento eventos incorporados en tiempo real, lo que permite emitir y actualizar continuamente los resultados.
- Aplicaciones de canalización de datos, que transforman y enriquecen los datos para moverlos de un almacenamiento de datos a otro. Tradicionalmente, la extracción, transformación y carga (ETL) se ejecutan periódicamente, en lotes. Con Apache Flink, el proceso puede funcionar de forma continua, lo que permite la transferencia de los datos con baja latencia a su destino.
¿Cómo funciona Apache Flink?
Flink es un motor de procesamiento de flujos de alto rendimiento y baja latencia. Una aplicación Flink consiste en un gráfico de flujo de datos acíclico complejo arbitrario, compuesto por flujos y transformaciones. Los datos se incorporan de uno o más orígenes de datos y se envían a uno o más destinos. Los sistemas de origen y destino pueden ser transmisiones, colas de mensajes o almacenes de datos, e incluyen archivos, bases de datos populares y motores de búsqueda. Las transformaciones pueden tener estados, como las agregaciones a lo largo de periodos o la detección de patrones complejos.
La tolerancia a errores se logra mediante dos mecanismos diferentes: los puntos de control automáticos y periódicos del estado de la aplicación, que se copian en un almacenamiento persistente para permitir la recuperación automática en caso de que se produzca un error; y los puntos de guardado bajo demanda, que guardan una imagen coherente del estado de ejecución para permitir detener y reanudar, actualizar o bifurcar el trabajo de Flink, y retener el estado de la aplicación durante las detenciones y los reinicios. Los mecanismos de puntos de control y puntos de guardado son asíncronos y toman una instantánea coherente del estado sin “detener el mundo”, mientras la aplicación sigue procesando los eventos.
¿Cuáles son los beneficios de Apache Flink?
Procese conjuntos de datos ilimitados (secuencias) y limitados (lotes)
Apache Flink puede procesar conjuntos de datos ilimitados y limitados, es decir, datos de lotes y secuencias. Las secuencias ilimitadas tienen un comienzo, pero son prácticamente infinitas y nunca terminan. En teoría, el procesamiento puede continuar sin detenerse nunca.
Los datos limitados, como las tablas, son finitos y se pueden procesar desde el principio hasta el final en un tiempo finito.
Apache Flink proporciona algoritmos y estructuras de datos para soportar el procesamiento limitado e ilimitado a través de la misma interfaz de programación. Las aplicaciones que procesan datos ilimitados se ejecutan de forma continua. Las aplicaciones que procesan datos limitados finalizan su ejecución al llegar al final de los conjuntos de datos de entrada.
Ejecute aplicaciones a escala
Apache Flink está diseñado para ejecutar aplicaciones con estado prácticamente a cualquier escala. El procesamiento se sincroniza con miles de tareas, distribuidas en varias máquinas, de forma simultánea.
El estado también se divide y distribuye horizontalmente, lo que permite mantener varios terabytes en varios equipos. El estado se verifica según un almacenamiento persistente de forma gradual.
Rendimiento en memoria
Los datos que fluyen por la aplicación y el estado se dividen en varias máquinas. Por lo tanto, la computación se puede completar si se accede a los datos locales, a menudo en la memoria.
Consistencia de estados “exactamente una vez”
Las aplicaciones que van más allá de las transformaciones de un solo mensaje funcionan con estado. La lógica empresarial debe recordar eventos o resultados intermedios. Apache Flink garantiza la coherencia del estado interno, incluso en el caso de que se produzca un error y durante la detención y el reinicio de la aplicación. El efecto de cada mensaje en el estado interno siempre se aplica exactamente una vez, independientemente de que la aplicación reciba duplicados del origen de datos durante la recuperación o el reinicio.
Amplio rango de conectores
Apache Flink cuenta con varios conectores comprobados para sistemas de mensajería y transmisión, almacenes de datos, motores de búsqueda y sistemas de archivos populares. Algunos ejemplos son Apache Kafka, Amazon Kinesis Data Streams, Amazon SQS, Active MQ, Rabbit MQ, NiFi, OpenSearch y ElasticSearch, DynamoDB, HBase y cualquier base de datos que proporcione un cliente JDBC.
Varios niveles de abstracciones
Apache Flink ofrece varios niveles de abstracción para la interfaz de programación. Desde la API Table y SQL de transmisión de nivel superior, mediante abstracciones conocidas como “table”, “join” y “group by”. La API DataStream ofrece un nivel inferior de abstracción, pero también más control, con la semántica de secuencias, la creación de ventanas y la asignación. Por último, la API ProcessFunction ofrece un control preciso del procesamiento de cada mensaje y un control directo del estado. Todas las interfaces de programación funcionan a la perfección con conjuntos de fechas ilimitados (secuencias) y limitados (tablas). Se pueden usar diferentes niveles de abstracciones en la misma aplicación como la herramienta adecuada para resolver cada problema.
Varios lenguajes de programación
Apache Flink se puede programar con varios lenguajes, desde SQL de transmisión de nivel superior hasta Python, Scala, Java, pero también con otros lenguajes de JVM como Kotlin.
¿Cuáles son los casos de uso de Apache Flink?
Los casos de uso de Apache Flink incluyen lo siguiente:
-
La detección de fraudes, la detección de anomalías, las alertas basadas en reglas y la personalización de la experiencia de usuario en tiempo real son ejemplos de casos de uso de aplicaciones basadas en eventos. Flink es perfecto para todos estos casos de uso que requieren procesar flujos de eventos de forma continua, si se tiene en cuenta la evolución a lo largo del tiempo. Sirve para detectar patrones complejos o calcular estadísticas a lo largo de periodos de tiempo específicos para detectar desviaciones de los umbrales esperados.
-
El monitoreo de la calidad, el análisis ad hoc de datos en vivo, el análisis de secuencias de clics y la evaluación de experimentos con productos son casos de uso de análisis de transmisión que Flink puede admitir de manera eficiente. Debido a que aprovecha el alto nivel de abstracción de la interfaz de programación SQL o la API de tabla, puede ejecutar los mismos análisis tanto en la transmisión de datos en vivo como en lotes de datos históricos.
-
La supervisión del sistema de archivos y la escritura de datos en un registro, la materialización de un flujo de eventos en una base de datos, la creación y el perfeccionamiento incrementales de un índice de búsqueda, son casos de uso compatibles de manera eficiente con la ETL continua. Debido a que aprovecha el amplio conjunto de conectores, Flink puede leer directamente desde varios tipos de almacenes de datos, ingerir flujos de eventos de cambio e incluso capturar los cambios directamente. Con la ingesta y el procesamiento continuos de los cambios y la actualización directa de los sistemas de destino, Flink puede reducir el retraso de la sincronización de datos a segundos o menos.
¿Quién usa Apache Flink?
NortonLifeLock
NortonLifeLock es una empresa global de ciberseguridad y privacidad en Internet que ofrece servicios a millones de clientes para la seguridad de los dispositivos y la privacidad de identidad y en línea para el hogar y la familia.
NortonLifeLock ofrece un producto de VPN como servicio freemium a los usuarios. Por lo tanto, deben hacer cumplir los límites de uso en tiempo real para evitar que los usuarios de freemium utilicen el servicio cuando su uso supere el límite. El desafío para NortonLifeLock es hacerlo de una manera fiable y asequible.
Con Apache Flink, NortonLifeLock simplificó la implementación de la agregación a nivel de usuario y dispositivo.
Samsung SmartThings
Como empresa subsidiaria independiente de Samsung, SmartThings es uno de los principales ecosistemas de IoT del mundo, y crea la forma más sencilla para que cualquiera pueda crear un hogar inteligente.
Samsung SmartThings estaba atravesando problemas como tener los recursos reservados para aplicaciones individuales. Esto provocó un retraso y una degradación del rendimiento durante el procesamiento de los datos. Con el tiempo, esto los llevó a incurrir en gastos generales muy costosos debido a que mantenían las cargas de trabajo en las operaciones. Tuvieron que rediseñar la plataforma de datos.
Se trasladaron de Apache Spark a Apache Flink.
BT Group
BT Group es el principal proveedor de telecomunicaciones y redes del Reino Unido y un proveedor líder de servicios y soluciones de comunicaciones globales, que presta servicios a clientes en 180 países. Sus principales actividades en el Reino Unido incluyen el suministro de telefonía fija, telefonía móvil, banda ancha y televisión (incluido el sector deportivo), y una gama de productos y servicios a través de redes fijas y móviles convergentes para consumidores, empresas y clientes del sector público.
BT necesitaba una aplicación de supervisión de servicios para respaldar el despliegue de Digital Voice, su nuevo producto de consumo que permitía hacer llamadas de voz de alta definición a través de su red de banda ancha del Reino Unido.
BT creó un servicio de análisis basado en eventos mediante Apache Flink para incorporar, procesar y visualizar los datos del servicio.
Autodesk
Autodesk, proveedor líder en software de ingeniería y diseño 3D, quiere hacer algo más que crear y ofrecer software. Quería asegurarse de que sus millones de usuarios en todo el mundo tuvieran la mejor experiencia al ejecutar ese software.
Autodesk diseña software para que las personas puedan realizar creaciones. Atienden a más de 200 millones de clientes. Necesitaban eliminar los silos para encontrar y solucionar los problemas de los clientes con mayor rapidez. Querían una forma coherente de recopilar y medir las métricas con un equipo de operaciones pequeño sin aumentar los costos ni crear un bloqueo de datos.
NHL
La Liga Nacional de Hockey es la segunda más antigua de las cuatro principales ligas profesionales de deportes de equipo en Norteamérica. En la actualidad, la NHL cuenta con 32 clubes miembros, cada uno de los cuales refleja la composición internacional de la Liga, con jugadores de más de 20 países representados en sus planteles.
La NHL se enfrentaba a varios desafíos técnicos, como determinar las características necesarias y los métodos de modelado para predecir un evento con una gran cantidad de incertidumbre, y determinar cómo utilizar los datos de los sensores PPT en streaming para identificar dónde se estaba produciendo un duelo, los jugadores involucrados y la probabilidad de que cada jugador ganara el duelo, todo ello en cientos de milisegundos.
Gracias a Apache Flink, la NHL no solo pudo predecir el ganador de un duelo, sino también sentar las bases para resolver varios problemas similares en tiempo real y de forma rentable.
Poshmark
Poshmark es un mercado social líder en estilos nuevos y de segunda mano para mujeres, hombres, niños, mascotas, hogar y más. Su comunidad de más de 80 millones de personas en EE. UU., Canadá, Australia e India está definiendo el futuro de las compras para que sean sencillas, sociales y sostenibles.
Poshmark se ha centrado en lograr un crecimiento de primera línea mediante la personalización y la mejora de la experiencia del usuario. El enfoque inicial de utilizar el procesamiento por lotes para la personalización y la seguridad no cumplió con las expectativas de mejora de la experiencia del cliente.
Poshmark diseñó la personalización en tiempo real mediante el enriquecimiento de datos en tiempo real con Apache Flink.
¿Cómo puede AWS ayudar a ejecutar las aplicaciones de Apache Flink en la nube?
Amazon Managed Service para Apache Flink es una solución completamente administrada para ejecutar aplicaciones de Apache Flink. Amazon Managed Service para Apache Flink reduce la complejidad de desarrollar, administrar e integrar las aplicaciones de Apache Flink con otros servicios de AWS. Con Amazon Managed Service para Apache Flink, no hay servidores que administrar, ni cuota mínima ni costo de configuración. La configuración tiene alta disponibilidad de forma predeterminada. El estado de la aplicación se administra por completo y se almacena en un backend de alta durabilidad para garantizar la tolerancia a errores. La aplicación se controla con una API simple para detener, iniciar, configurar y escalar la aplicación.
Amazon Managed Service para Apache Flink Studio ofrece una interfaz interactiva de cuaderno para Apache Flink. Con un cuaderno Apache Zeppelin, puede ejecutar código SQL, Python y Scala en Apache Flink para el desarrollo y la experimentación, la visualización o la inspección de los datos.
Amazon EMR también admite Apache Flink como aplicación YARN, para que pueda administrar los recursos junto con la ejecución de otras aplicaciones dentro del clúster.
Apache Flink admite Kubernetes de forma nativa. Puede alojar Apache Flink usted mismo en un entorno en contenedores como Amazon Elastic Kubernetes Service (Amazon EKS) o administrarlo completamente usted mismo con Amazon Elastic Compute Cloud (Amazon EC2).
Para comenzar a utilizar Apache Flink en AWS, cree una cuenta hoy mismo.
Siguientes pasos en AWS
Obtenga acceso instantáneo al nivel Gratuito de AWS.
Comience a crear en la consola de administración de AWS.