Apache Flink - Arquitectura

Apache Flink funciona en la arquitectura Kappa. La arquitectura Kappa tiene un solo procesador: flujo, que trata todas las entradas como flujo y el motor de flujo procesa los datos en tiempo real. Los datos por lotes en la arquitectura kappa son un caso especial de transmisión.

El siguiente diagrama muestra el Apache Flink Architecture.

La idea clave en la arquitectura de Kappa es manejar datos por lotes y en tiempo real a través de un motor de procesamiento de flujo único.

La mayoría de los marcos de big data funcionan en la arquitectura Lambda, que tiene procesadores separados para datos por lotes y de transmisión. En la arquitectura Lambda, tiene bases de código independientes para las vistas por lotes y por secuencias. Para consultar y obtener el resultado, las bases de código deben fusionarse. No mantener bases de código / vistas separadas y fusionarlas es una molestia, pero la arquitectura Kappa resuelve este problema ya que solo tiene una vista: en tiempo real, por lo que no es necesario fusionar la base de código.

Eso no significa que la arquitectura Kappa reemplace la arquitectura Lambda, depende completamente del caso de uso y de la aplicación que decide qué arquitectura sería preferible.

El siguiente diagrama muestra la arquitectura de ejecución de trabajos de Apache Flink.

Programa

Es un fragmento de código que se ejecuta en Flink Cluster.

Cliente

Es responsable de tomar el código (programa) y construir el gráfico de flujo de datos del trabajo, luego pasarlo a JobManager. También recupera los resultados del trabajo.

JobManager

Después de recibir el gráfico de flujo de datos del trabajo del cliente, es responsable de crear el gráfico de ejecución. Asigna el trabajo a TaskManagers en el clúster y supervisa la ejecución del trabajo.

Administrador de tareas

Es el encargado de ejecutar todas las tareas que le haya asignado JobManager. Todos los TaskManagers ejecutan las tareas en sus ranuras separadas en un paralelismo especificado. Es responsable de enviar el estado de las tareas a JobManager.

Características de Apache Flink

Las características de Apache Flink son las siguientes:

  • Tiene un procesador de transmisión, que puede ejecutar programas tanto por lotes como por transmisión.

  • Puede procesar datos a la velocidad del rayo.

  • API disponibles en Java, Scala y Python.

  • Proporciona API para todas las operaciones comunes, que es muy fácil de usar para los programadores.

  • Procesa datos en baja latencia (nanosegundos) y alto rendimiento.

  • Es tolerante a fallas. Si un nodo, una aplicación o un hardware falla, no afecta al clúster.

  • Puede integrarse fácilmente con Apache Hadoop, Apache MapReduce, Apache Spark, HBase y otras herramientas de big data.

  • La gestión en memoria se puede personalizar para un mejor cálculo.

  • Es altamente escalable y puede escalar hasta miles de nodos en un clúster.

  • La creación de ventanas es muy flexible en Apache Flink.

  • Proporciona bibliotecas de procesamiento de gráficos, aprendizaje automático y procesamiento de eventos complejos.