Introducción, características y comparación de Flink con otros frameworks de big data

Que es Flink

En la era del rápido aumento en el volumen de datos, se genera una gran cantidad de datos comerciales en varios escenarios comerciales.La forma de procesar de manera efectiva estos datos generados continuamente se ha convertido en un problema al que se enfrentan la mayoría de las empresas en la actualidad. En la actualidad, el popular motor de procesamiento de big data Apache Spark básicamente ha reemplazado a MapReduce como el estándar actual de procesamiento de big data. Pero para el procesamiento de datos en tiempo real, Spark-Streaming de Apache Spark todavía tiene espacio para mejorar el rendimiento. La computación de flujo de Spark-Streaming es esencialmente computación por lotes (micro-lotes). Apache Flink es un marco de procesamiento distribuido en tiempo real puro que puede admitir simultáneamente un alto rendimiento, baja latencia y alto rendimiento entre las tecnologías que se han desarrollado continuamente al aire libre comunidad de origen en los últimos años.

Definición de flink

Apache Flink es un marco y un motor de procesamiento distribuido para computación con estado en flujos de datos ilimitados y acotados. Flink puede ejecutarse en todos los entornos de clúster comunes y puede realizar cálculos a velocidades de memoria y a cualquier escala.
Apache Flink es un marco y un motor de procesamiento distribuido para cálculos con estado sobre flujos de datos delimitados e ilimitados. Flink ha sido diseñado para funcionar en todos los entornos de clúster comunes, realizar cálculos a velocidad en memoria y a cualquier escala.

Flujo limitado y flujo ilimitado

Flujo ilimitado: el comienzo del flujo está definido, pero el final del flujo no está definido. Generan datos sin cesar. Los datos de flujo ilimitados deben procesarse continuamente, es decir, los datos deben procesarse inmediatamente después de ser ingeridos. No puede esperar hasta que lleguen todos los datos antes de procesarlos, porque la entrada es infinita y la entrada no terminará en ningún momento. El procesamiento de datos ilimitados generalmente requiere ingerir eventos en un orden específico, como el orden en el que ocurren, de modo que se pueda inferir la integridad de los resultados.
Flujo limitado: hay una definición del comienzo del flujo y una definición del final del flujo. El flujo limitado se puede calcular después de que se hayan ingerido todos los datos. Todos los datos de un flujo limitado se pueden clasificar, por lo que no es necesario realizar una ingestión ordenada. El procesamiento de flujo limitado se denomina generalmente procesamiento por lotes.

Arquitectura informática con estado

El flujo de datos es la generación continua de una serie de eventos reales en orden cronológico. Es difícil para nosotros realizar cálculos directamente y generar resultados estadísticos en el proceso de generación de datos, porque esto no solo impone requisitos muy altos al sistema, sino que también debe cumplir muchos objetivos, como alto rendimiento, alto rendimiento y baja latencia.
La arquitectura de computación de flujo con estado (como se muestra en la figura) se propone para satisfacer las necesidades de las empresas hasta cierto punto. Basado en datos de transmisión en tiempo real, el estado de todos los procesos de cálculo se mantiene (el llamado estado es el intermedio cálculo generado durante el proceso de cálculo) .Resultado), cada vez que ingresan nuevos datos al sistema, el cálculo se realiza en base a los resultados del estado intermedio, y finalmente se generan los resultados estadísticos correctos.
La mayor ventaja de la computación con estado es que no necesita recuperar los datos originales del almacenamiento externo para realizar cálculos completos (este método de cálculo es muy costoso). Al mismo tiempo, los usuarios no necesitan programar y coordinar varias herramientas de cálculo por lotes para obtener resultados de estadísticas de datos del almacén de datos, lo que puede reducir en gran medida la dependencia del sistema de otros marcos, reducir la pérdida de tiempo y el almacenamiento de hardware en el proceso de cálculo de datos.

Por qué usar Flink

La computación de flujo con estado se convertirá gradualmente en un modelo arquitectónico para las empresas como plataforma de datos En la actualidad, desde la perspectiva de la comunidad, solo Apache Flink puede estar satisfecho. Flink realiza un marco de computación de transmisión en tiempo real con alto rendimiento, baja latencia y alto rendimiento mediante la implementación del modelo de computación de transmisión de Google Dataflow. Al mismo tiempo, Flink admite una gestión de estado altamente tolerante a fallas para evitar que el estado se pierda debido a anomalías del sistema durante el proceso de cálculo. Flink implementa periódicamente el mantenimiento persistente del estado a través de la tecnología de instantáneas distribuidas Checkpoints, de modo que incluso cuando el el sistema no funciona o es anormal Puede calcular el resultado correcto

Escenarios de aplicación

En teoría, Flink se puede utilizar en todos los escenarios de big data, como datos de transacciones financieras, datos de pedidos de Internet, datos de posicionamiento GPS, señales de sensores, datos generados por terminales móviles, datos de señales de comunicación, etc., así como el tráfico de red familiar. Monitoreo y registros del servidor Datos La característica más común de estos datos es que se generan a partir de diferentes fuentes de datos en tiempo real y luego se transmiten al sistema de análisis posterior. Incluye principalmente recomendaciones inteligentes en tiempo real, procesamiento de eventos complejos, detección de fraudes en tiempo real, almacenamiento de datos en tiempo real y tipo ETL, tipo de análisis de datos de transmisión, tipo de informe en tiempo real y otros escenarios comerciales en tiempo real.

Caracteristicas y ventajas

Flink tiene las siguientes características:
1. Admite alto rendimiento, baja latencia y alto rendimiento al mismo tiempo.
Flink es actualmente el único marco de procesamiento de datos de flujo distribuido en la comunidad de código abierto que integra alto rendimiento, baja latencia y alto rendimiento. Al igual que la chispa Apache, sólo se puede tener en cuenta tanto las características de alto rendimiento y de alto rendimiento, mientras que el marco de la transmisión de computación Apache tormenta sólo puede soportar características de baja latencia y alto rendimiento, pero no puede cumplir los requisitos de alto rendimiento.
2 Se admite el concepto de tiempo del evento
La mayoría de las veces El cálculo de la ventana de marco utiliza el tiempo del sistema (tiempo de proceso), que también es el tiempo actual del host del sistema cuando el evento se transmite al marco de cálculo para su procesamiento. Flink puede admitir cálculos de ventana basados ​​en la semántica de tiempo de evento, es decir, utilizando el tiempo en que se genera el evento. Este mecanismo impulsado por eventos permite que el sistema de transmisión calcule resultados precisos incluso si los eventos llegan fuera de orden, manteniendo los eventos. de la generación original, evite la influencia de la transmisión de la red o del sistema de hardware tanto como sea posible
. 3. Soporta el cálculo de estado El
llamado estado es para guardar los datos de resultados intermedios del operador en la memoria o sistema de archivos durante el proceso de cálculo de transmisión , y esperar al siguiente. Después de que el evento ingrese al operador, el resultado actual se puede calcular a partir del resultado intermedio obtenido del estado anterior, por lo que no es necesario calcular el resultado en base a todos los datos originales cada vez. Este método mejora en gran medida el rendimiento del sistema y reduce el cálculo de datos Consumo de recursos del proceso
4. Admite una operación de ventana altamente flexible
En las aplicaciones de procesamiento de transmisiones, los datos son continuos y es necesario realizar un cierto rango de cálculos agregados en los datos de transmisión a través de una ventana, como contar cuántos usuarios hicieron clic en una página web en el último minuto. En este caso, debemos definir una ventana para recopilar los datos en el último minuto y volver a calcular los datos en esta ventana. Flink divide las ventanas en operaciones de ventana según el tiempo, el recuento, la sesión y los datos. La ventana se puede personalizar con condiciones de activación flexibles para admitir modos de transmisión complejos. Los usuarios pueden definir diferentes mecanismos de activación de la ventana. Para satisfacer diferentes necesidades
5. Fallo-
Flink tolerante basado en instantáneas distribuidas ligeras (CheckPoint) puede ejecutarse en miles de nodos de manera distribuida, desarmando el proceso de una gran tarea informática en pequeños procesos informáticos, y luego tesk Distributed a nodos paralelos para su procesamiento. Durante la ejecución de la tarea, los errores en el proceso de procesamiento de eventos pueden encontrar automáticamente inconsistencias de datos, como tiempo de inactividad del nodo, problemas de transmisión de la red o reinicio de los servicios informáticos debido a problemas de actualización o reparación del usuario. En estos casos, a través de Checkpoints basados ​​en tecnología de instantáneas distribuidas, la información de estado en el proceso de ejecución se almacena de manera persistente. Una vez que la tarea se detiene de manera anormal, Flink puede restaurar automáticamente la tarea desde Checkpoints para asegurarse de que los datos están en proceso de procesamiento. Exactamente -Una vez
6. Implementar la administración de memoria independiente basada en JVM
Flink implementa su propio mecanismo de administración de memoria para minimizar el impacto de JVM GC en el sistema. Además, Flink utiliza métodos de serialización / deserialización para convertir todos los objetos de datos en datos binarios y almacenarlos en la memoria. Al tiempo que reduce el tamaño del almacenamiento de datos, puede utilizar el espacio de la memoria de manera más eficaz y reducir la degradación del rendimiento causada por GC. El riesgo de tareas anormales, por lo que Flink será más estable que otros marcos de procesamiento distribuidos y no afectará el funcionamiento de toda la aplicación debido a problemas como JVM GC.
7. Guardar puntos (Guardar puntos)
Para las aplicaciones de transmisión que se ejecutan las 7 * 24 horas, se accede a los datos continuamente. La finalización de la aplicación dentro de un período de tiempo puede provocar la pérdida de datos o resultados de cálculo inexactos, como actualizar la versión del clúster, apagar el funcionamiento y el mantenimiento, etc. . Flink guarda la instantánea de la ejecución de la tarea en el medio de almacenamiento a través de la tecnología Save Points. Cuando la tarea se reinicia, puede restaurar directamente el estado de cálculo original a partir de los Save Points guardados, para que la tarea continúe ejecutándose en el estado anterior al cierre. La tecnología Save Points puede permitir a los usuarios administrar y operar mejor las aplicaciones de transmisión en tiempo real

Comparación de los marcos de transmisión de la computación

El desarrollo del motor de computación ha pasado por varios procesos, desde la primera generación de MapReduce, hasta la segunda generación de Tez basada en gráficos acíclicos dirigidos, la tercera generación de Spark basada en computación de memoria, y luego hasta la cuarta generación de Flink. Comparación de varios marcos de la siguiente manera:
Inserte la descripción de la imagen aquí

Modelo: Storm y Flink realmente están procesando datos uno por uno; mientras que Trident (el marco de encapsulación de Storm) y Spark Streaming son en realidad lotes pequeños, procesando un lote de datos a la vez (lotes pequeños).
API: Storm y Trident usan API básicas para el desarrollo, y la operación es relativamente complicada; mientras que Spark Streaming y Flink proporcionan funciones encapsuladas de alto orden, que se pueden usar directamente, lo cual es más conveniente.
Tiempos garantizados: En términos de procesamiento de datos, Storm se puede procesar al menos una vez, pero no se puede garantizar que se procese solo una vez. Esto dará lugar al problema de procesamiento de datos repetido. Por lo tanto, para los requisitos de recuento, pueden ocurrir algunos errores; Trident puede garantizar la exactitud a través de transacciones.Los datos se procesan solo una vez, al igual que Spark Streaming y Flink.
Mecanismo de tolerancia a fallas: Storm y Trident pueden lograr tolerancia a fallas de datos a través del mecanismo ACK, mientras que Spark Streaming y Flink pueden lograr tolerancia a fallas a través del mecanismo CheckPoint.
Administración de estado: la administración de estado no está implementada en Storm. Spark Streaming implementa la administración de estado basada en DStream, mientras que Trident y Flink implementan la administración de estado basada en operaciones.
Latencia: indica la latencia del procesamiento de datos. Debido a que Storm y Flink procesan una parte de los datos cuando reciben una parte de los datos, la latencia del procesamiento de datos es muy baja; mientras que Trident y Spark Streaming son lotes pequeños y sus datos se procesan La latencia del sistema será relativamente alta.
Rendimiento: El rendimiento de Storm en realidad no es bajo, pero es bajo en comparación con varios otros marcos; Trident es medio; y el rendimiento de Spark Streaming y Flink es relativamente alto.

Supongo que te gusta

Origin blog.csdn.net/zhangxm_qz/article/details/108112717
Recomendado
Clasificación