Enlace apache

Framework and distributed processing engine
Enlace apache
Desarrollador(es)Fundación de software Apache
Lanzamiento inicialMayo de 2011 ; hace 13 años (2011-05)
Versión estable
1.20.0 [1]  / 1 de agosto de 2024 ; hace 2 meses [2] (1 August 2024)
Repositorio
  • github.com/apache/flink
Escrito enJava y Scala
Sistema operativoMultiplataforma
Tipo
LicenciaLicencia Apache 2.0
Sitio webflink.apache.org 

Apache Flink es un marco de trabajo de procesamiento de flujo y procesamiento por lotes unificado de código abierto desarrollado por la Apache Software Foundation . El núcleo de Apache Flink es un motor de flujo de datos de transmisión distribuido escrito en Java y Scala . [3] [4] Flink ejecuta programas de flujo de datos arbitrarios de manera paralela a los datos y canalizada (por lo tanto , en paralelo a las tareas ). [5] El sistema de ejecución canalizada de Flink permite la ejecución de programas de procesamiento masivo/por lotes y de flujo. [6] [7] Además, el entorno de ejecución de Flink admite la ejecución de algoritmos iterativos de forma nativa. [8]

Flink proporciona un motor de transmisión de alto rendimiento y baja latencia [9] , así como soporte para el procesamiento en tiempo de eventos y la gestión de estados. Las aplicaciones de Flink son tolerantes a fallas en caso de falla de la máquina y admiten la semántica de "exactamente una vez". [10] Los programas se pueden escribir en Java , Scala , [11] Python , [12] y SQL [13] y se compilan y optimizan automáticamente [14] en programas de flujo de datos que se ejecutan en un entorno de clúster o de nube. [15]

Flink no proporciona su propio sistema de almacenamiento de datos, pero proporciona conectores de origen y destino de datos a sistemas como Apache Doris, Amazon Kinesis , Apache Kafka , HDFS , Apache Cassandra y ElasticSearch . [16]

Desarrollo

Apache Flink es desarrollado bajo la Licencia Apache 2.0 [17] por la Comunidad Apache Flink dentro de la Apache Software Foundation . El proyecto está impulsado por más de 25 colaboradores y más de 340 contribuidores.

Descripción general

El modelo de programación de flujo de datos de Apache Flink permite el procesamiento de eventos por vez en conjuntos de datos finitos e infinitos. En un nivel básico, los programas de Flink constan de flujos y transformaciones. “Conceptualmente, un flujo es un flujo (potencialmente interminable) de registros de datos, y una transformación es una operación que toma uno o más flujos como entrada y produce uno o más flujos de salida como resultado”. [18]

Apache Flink incluye dos API principales: una API DataStream para flujos de datos limitados o no limitados y una API DataSet para conjuntos de datos limitados. Flink también ofrece una API Table, que es un lenguaje de expresión similar a SQL para el procesamiento relacional de flujos y lotes que se puede integrar fácilmente en las API DataStream y DataSet de Flink. El lenguaje de más alto nivel compatible con Flink es SQL, que es semánticamente similar a la API Table y representa programas como expresiones de consulta SQL.

Modelo de programación y tiempo de ejecución distribuido

Al ejecutarse, los programas Flink se asignan a flujos de datos de transmisión . [18] Cada flujo de datos Flink comienza con una o más fuentes (una entrada de datos, por ejemplo, una cola de mensajes o un sistema de archivos) y termina con uno o más receptores (una salida de datos, por ejemplo, una cola de mensajes, un sistema de archivos o una base de datos). Se puede realizar una cantidad arbitraria de transformaciones en el flujo. Estos flujos se pueden organizar como un gráfico de flujo de datos acíclico dirigido, lo que permite que una aplicación ramifique y fusione flujos de datos.

Flink ofrece conectores de origen y destino listos para usar con Apache Kafka , Amazon Kinesis, [19] HDFS , Apache Cassandra y más. [16]

Los programas Flink se ejecutan como un sistema distribuido dentro de un clúster y se pueden implementar en modo independiente, así como en configuraciones basadas en YARN, Mesos y Docker junto con otros marcos de gestión de recursos. [20]

Estado: puntos de control, puntos de guardado y tolerancia a fallos

Apache Flink incluye un mecanismo de tolerancia a fallos ligero basado en puntos de control distribuidos. [10] Un punto de control es una instantánea automática y asincrónica del estado de una aplicación y la posición en un flujo de origen. En caso de fallo, un programa Flink con puntos de control habilitados reanudará, tras la recuperación, el procesamiento desde el último punto de control completado, lo que garantiza que Flink mantenga la semántica de estado de una sola vez dentro de una aplicación. El mecanismo de puntos de control expone ganchos para que el código de la aplicación incluya también sistemas externos en el mecanismo de puntos de control (como abrir y confirmar transacciones con un sistema de base de datos).

Flink también incluye un mecanismo llamado puntos de guardado, que son puntos de control activados manualmente. [21] Un usuario puede generar un punto de guardado, detener un programa Flink en ejecución y luego reanudar el programa desde el mismo estado de aplicación y posición en la secuencia. Los puntos de guardado permiten realizar actualizaciones a un programa Flink o a un clúster Flink sin perder el estado de la aplicación. A partir de Flink 1.2, los puntos de guardado también permiten reiniciar una aplicación con un paralelismo diferente, lo que permite a los usuarios adaptarse a las cargas de trabajo cambiantes.

API de flujo de datos

La API DataStream de Flink permite realizar transformaciones (por ejemplo, filtros, agregaciones, funciones de ventana) en flujos de datos acotados o no acotados. La API DataStream incluye más de 20 tipos diferentes de transformaciones y está disponible en Java y Scala. [22]

Un ejemplo simple de un programa de procesamiento de flujo con estado es una aplicación que emite un recuento de palabras desde un flujo de entrada continuo y agrupa los datos en ventanas de 5 segundos:

importar org . apache . flink . streaming . api . scala . _ importar org . apache . flink . streaming . api . windowing . time . Time  clase de caso WordCount ( palabra : String , conteo : Int )     objeto WindowWordCount { def main ( args : Matriz [ Cadena ]) {       val env = StreamExecutionEnvironment . getExecutionEnvironment val text = env . socketTextStream ( "localhost" , 9999 )         val counts = text . flatMap { _ . toLowerCase . split ( "\\W+" ) filter { _ . nonEmpty } } . map { WordCount ( _ , 1 ) } . keyBy ( "palabra" ) . timeWindow ( Tiempo . segundos ( 5 )) . sum ( "count" )                   cuenta . imprimir env .execute ( "Conteo de palabras de la secuencia de ventanas " ) } } 

Apache Beam “ofrece un modelo de programación unificado avanzado, que permite (a un desarrollador) implementar trabajos de procesamiento de datos por lotes y en streaming que pueden ejecutarse en cualquier motor de ejecución”. [23] El ejecutor Apache Flink-on-Beam es el más rico en funciones según una matriz de capacidades mantenida por la comunidad Beam. [24]

Los artisanos de datos, en conjunto con la comunidad Apache Flink, trabajaron en estrecha colaboración con la comunidad Beam para desarrollar un ejecutor de Flink. [25]

API de conjunto de datos

La API DataSet de Flink permite realizar transformaciones (por ejemplo, filtros, mapeo, unión, agrupamiento) en conjuntos de datos delimitados. La API DataSet incluye más de 20 tipos diferentes de transformaciones. [26] La API está disponible en Java, Scala y una API experimental de Python. La API DataSet de Flink es conceptualmente similar a la API DataStream.

API de tabla y SQL

La API de tablas de Flink es un lenguaje de expresión similar a SQL para el procesamiento relacional de flujos y lotes que se puede incorporar en las API de conjuntos de datos y secuencias de datos de Java y Scala de Flink. La API de tablas y la interfaz SQL funcionan en una abstracción de tablas relacionales. Las tablas se pueden crear a partir de fuentes de datos externas o de conjuntos de datos y secuencias de datos existentes. La API de tablas admite operadores relacionales como selección, agregación y uniones en tablas.

Las tablas también se pueden consultar con SQL normal. La API de tablas y SQL ofrecen una funcionalidad equivalente y se pueden combinar en el mismo programa. Cuando una tabla se convierte nuevamente en un DataSet o DataStream, el plan lógico, que se definió mediante operadores relacionales y consultas SQL, se optimiza utilizando Apache Calcite y se transforma en un programa DataSet o DataStream. [27]

Flink Forward es una conferencia anual sobre Apache Flink. La primera edición de Flink Forward se celebró en 2015 en Berlín. La conferencia de dos días contó con más de 250 asistentes de 16 países. Las sesiones se organizaron en dos secciones con más de 30 presentaciones técnicas de desarrolladores de Flink y una sección adicional con capacitación práctica sobre Flink.

En 2016, 350 participantes se unieron a la conferencia y más de 40 oradores presentaron charlas técnicas en 3 temas paralelos. El tercer día, los asistentes fueron invitados a participar en sesiones de capacitación práctica.

En 2017, el evento también se expande a San Francisco. El día de la conferencia está dedicado a charlas técnicas sobre cómo se utiliza Flink en la empresa, los aspectos internos del sistema Flink, las integraciones del ecosistema con Flink y el futuro de la plataforma. Incluye presentaciones, charlas de usuarios de Flink en la industria y el mundo académico, y sesiones de capacitación práctica sobre Apache Flink.

En 2020, a raíz de la pandemia de COVID-19, la edición de primavera de Flink Forward, que debía celebrarse en San Francisco, se canceló. En su lugar, la conferencia se celebró de forma virtual, desde el 22 de abril hasta el 24 de abril, con presentaciones en directo, casos de uso de Flink, aspectos internos de Apache Flink y otros temas sobre procesamiento de flujos y análisis en tiempo real. [28]

Historia

En 2010, el proyecto de investigación "Stratosphere: Information Management on the Cloud" [29] dirigido por Volker Markl (financiado por la Fundación Alemana de Investigación (DFG) ) [30] se inició como una colaboración de la Technische Universität Berlin , la Humboldt-Universität zu Berlin y el Hasso-Plattner-Institut Potsdam. Flink comenzó a partir de una bifurcación del motor de ejecución distribuida de Stratosphere y se convirtió en un proyecto de Apache Incubator en marzo de 2014. [31] En diciembre de 2014, Flink fue aceptado como un proyecto de nivel superior de Apache. [32] [33] [34] [35]

VersiónFecha de lanzamiento originalÚltima versiónFecha de lanzamiento
Old version, no longer maintained:0.924 de junio de 20150.9.101-09-2015
Old version, no longer maintained:0,1016 de noviembre de 20150.10.211 de febrero de 2016
Old version, no longer maintained:1.008-03-20161.0.311 de mayo de 2016
Old version, no longer maintained:1.108-08-20161.1.522 de marzo de 2017
Old version, no longer maintained:1.206-02-20171.2.126 de abril de 2017
Old version, no longer maintained:1.301-06-20171.3.315 de marzo de 2018
Old version, no longer maintained:1.412 de diciembre de 20171.4.208-03-2018
Old version, no longer maintained:1.525 de mayo de 20181.5.626 de diciembre de 2018
Old version, no longer maintained:1.608-08-20181.6.322 de diciembre de 2018
Old version, no longer maintained:1.730 de noviembre de 20181.7.215 de febrero de 2019
Old version, no longer maintained:1.809-04-20191.8.311 de diciembre de 2019
Old version, no longer maintained:1.922 de agosto de 20191.9.230 de enero de 2020
Old version, no longer maintained:1.1011 de febrero de 20201.10.329 de enero de 2021
Old version, no longer maintained:1.1106-07-20201.11.616 de diciembre de 2021
Old version, no longer maintained:1.1210 de diciembre de 20201.12.716 de diciembre de 2021
Old version, no longer maintained:1.1303-05-20211.13.618 de febrero de 2022
Old version, no longer maintained:1.1429 de septiembre de 20211.14.628 de septiembre de 2022
Old version, no longer maintained:1.155 de mayo de 20221.15.415 de marzo de 2023
Old version, no longer maintained:1.1628 de octubre de 20221.16.329 de noviembre de 2023
Old version, yet still maintained:1.1723-03-20231.17.229 de noviembre de 2023
Old version, yet still maintained:1.1824 de octubre de 20231.18.024 de octubre de 2023
Current stable version: 1.1918-03-20241.19.018-03-2024
Leyenda:
Versión antigua, sin mantenimiento
Versión antigua, aún mantenida
Última versión
Latest preview version
Future release

Fechas de lanzamiento

  • 03/2024: Apache Flink 1.19
  • 10/2023: Apache Flink 1.18 (01/2024: v1.18.1)
  • 03/2023: Apache Flink 1.17 (05/2023: v1.17.1; 11/2023: v1.17.2)
  • 10/2022: Apache Flink 1.16 (01/2023: v1.16.1; 05/2023: v1.16.2; 11/2023: v1.16.3)
  • 05/2022: Apache Flink 1.15 (07/2022: v1.15.1; 08/2022: v1.15.2; 11/2022: v1.15.3; 03/2023: v1.15.4)
  • 09/2021: Apache Flink 1.14 (12/2021: v1.14.2; 01/2022: v1.14.3; 03/2022: v1.14.4; 06/2022: v1.14.5; 09/2022: v1.14.6)
  • 05/2021: Apache Flink 1.13 (05/2021: v1.13.1; 08/2021: v1.13.2; 10/2021: v1.13.3; 12/2021: v1.13.5; 02/2022: v1.13.6)
  • 12/2020: Apache Flink 1.12 (01/2021: v1.12.1; 03/2021: v1.12.2; 04/2021: v1.12.3; 05/2021: v1.12.4; 08/2021: v1.12.5; 12/ 2021: v1.12.7)
  • 07/2020: Apache Flink 1.11 (07/2020: v1.11.1; 09/2020: v1.11.2; 12/2020: v1.11.3; 08/2021: v1.11.4; 12/2021: v1.11.6)
  • 02/2020: Apache Flink 1.10 (05/2020: v1.10.1; 08/2020: v1.10.2; 01/2021: v1.10.3)
  • 08/2019: Apache Flink 1.9 (10/2019: v1.9.1; 01/2020: v1.9.2)
  • 04/2019: Apache Flink 1.8 (07/2019: v1.8.1; 09/2019: v1.8.2; 12/2019: v1.8.3)
  • 11/2018: Apache Flink 1.7 (12/2018: v1.7.1; 02/2019: v1.7.2)
  • 08/2018: Apache Flink 1.6 (09/2018: v1.6.1; 10/2018: v1.6.2; 12/2018: v1.6.3; 02/2019: v1.6.4)
  • 05/2018: Apache Flink 1.5 (07/2018: v1.5.1; 07/2018: v1.5.2; 08/2018: v1.5.3; 09/2018: v1.5.4; 10/2018: v1.5.5; 12/ 2018: v1.5.6)
  • 12/2017: Apache Flink 1.4 (02/2018: v1.4.1; 03/2018: v1.4.2)
  • 06/2017: Apache Flink 1.3 (06/2017: v1.3.1; 08/2017: v1.3.2; 03/2018: v1.3.3)
  • 02/2017: Apache Flink 1.2 (04/2017: v1.2.1)
  • 08/2016: Apache Flink 1.1 (08/2016: v1.1.1; 09/2016: v1.1.2; 10/2016: v1.1.3; 12/2016: v1.1.4; 03/2017: v1.1.5)
  • 03/2016: Apache Flink 1.0 (04/2016: v1.0.1; 04/2016: v1.0.2; 05/2016: v1.0.3)
  • 11/2015: Apache Flink 0.10 (11/2015: v0.10.1; 02/2016: v0.10.2)
  • 06/2015: Apache Flink 0.9 (09/2015: v0.9.1)
    • 04/2015: Apache Flink 0.9-hito-1

Fechas de lanzamiento de Apache Incubator

  • 01/2015: Apache Flink 0.8-incubando
  • 11/2014: Apache Flink 0.7-incubación
  • 08/2014: Apache Flink 0.6-en incubación (09/2014: v0.6.1-en incubación)
  • 05/2014: Estratosfera 0.5 (06/2014: v0.5.1; 07/2014: v0.5.2)

Fechas de lanzamiento de la versión anterior a Apache Stratosphere

  • 01/2014: Stratosphere 0.4 (se omitió la versión 0.3)
  • 08/2012: Estratosfera 0.2
  • 05/2011: Estratosfera 0.1 (08/2011: v0.1.1)

Las versiones 1.14.1, 1.13.4, 1.12.6 y 1.11.5, que se suponía que solo contendrían una actualización de Log4j a 2.15.0, se omitieron porque se descubrió CVE-2021-45046 durante la publicación de la versión. [36]

Véase también

Referencias

  1. ^ "Versión 1.20.0". 1 de agosto de 2024. Consultado el 20 de agosto de 2024 .
  2. ^ "Todas las versiones estables de Flink". flink.apache.org . Apache Software Foundation . Consultado el 20 de diciembre de 2021 .
  3. ^ "Apache Flink: procesamiento escalable de datos por lotes y flujos". apache.org .
  4. ^ "apache/flink". GitHub . 29 de enero de 2022.
  5. ^ Alexander Alexandrov, Rico Bergmann, Stephan Ewen, Johann-Christoph Freytag, Fabian Hueske, Arvid Heise, Odej Kao, Marcus Leich, Ulf Leser, Volker Markl , Felix Naumann, Mathias Peters, Astrid Rheinländer, Matthias J. Sax, Sebastian Schelter, Mareike Höger, Kostas Tzoumas y Daniel Warneke. 2014. La plataforma Stratosphere para análisis de big data . The VLDB Journal 23, 6 (diciembre de 2014), 939-964. DOI
  6. ^ Ian Pointer (7 de mayo de 2015). "Apache Flink: el nuevo contendiente de Hadoop se enfrenta a Spark". InfoWorld .
  7. ^ "Sobre Apache Flink. Entrevista con Volker Markl". odbms.org .
  8. ^ Stephan Ewen, Kostas Tzoumas, Moritz Kaufmann y Volker Markl . 2012. Generación rápida de flujos de datos iterativos . Proc. VLDB Endow. 5, 11 (julio de 2012), 1268-1279. DOI
  9. ^ "Evaluación comparativa de motores de computación de streaming en Yahoo!". Yahoo Engineering . Consultado el 23 de febrero de 2017 .
  10. ^ ab Carbone, Paris; Fóra, Gyula; Ewen, Stephan; Haridi, Seif; Tzoumas, Kostas (29 de junio de 2015). "Instantáneas asincrónicas ligeras para flujos de datos distribuidos". arXiv : 1506.08603 [cs.DC].
  11. ^ "Documentación de Apache Flink 1.2.0: Guía de programación de la API de Flink DataStream". ci.apache.org . Consultado el 23 de febrero de 2017 .
  12. ^ "Documentación de Apache Flink 1.2.0: Guía de programación en Python". ci.apache.org . Consultado el 23 de febrero de 2017 .
  13. ^ "Documentación de Apache Flink 1.2.0: Tabla y SQL". ci.apache.org . Consultado el 23 de febrero de 2017 .
  14. ^ Fabian Hueske, Mathias Peters, Matthias J. Sax, Astrid Rheinländer, Rico Bergmann, Aljoscha Krettek y Kostas Tzoumas. 2012. Abriendo las cajas negras en la optimización del flujo de datos . Proc. VLDB Endow. 5, 11 (julio de 2012), 1256-1267. DOI
  15. ^ Daniel Warneke y Odej Kao. 2009. Nephele: procesamiento de datos en paralelo eficiente en la nube . En Actas del 2º Taller sobre Computación Multitarea en Redes y Supercomputadoras (MTAGS '09). ACM, Nueva York, NY, EE. UU., Artículo 8, 10 páginas. DOI
  16. ^ ab "Documentación de Apache Flink 1.2.0: conectores de transmisión". ci.apache.org . Consultado el 23 de febrero de 2017 .
  17. ^ "Repositorios Git de ASF - flink.git/blob - LICENCIA". apache.org . Archivado desde el original el 23 de octubre de 2017 . Consultado el 12 de abril de 2015 .
  18. ^ ab "Documentación de Apache Flink 1.2.0: modelo de programación de flujo de datos". ci.apache.org . Consultado el 23 de febrero de 2017 .
  19. ^ "Kinesis Data Streams: procesamiento de datos en streaming en tiempo real". 5 de enero de 2022.
  20. ^ "Documentación de Apache Flink 1.2.0: entorno de ejecución distribuido". ci.apache.org . Consultado el 24 de febrero de 2017 .
  21. ^ "Documentación de Apache Flink 1.2.0: entorno de ejecución distribuido - puntos de guardado". ci.apache.org . Consultado el 24 de febrero de 2017 .
  22. ^ "Documentación de Apache Flink 1.2.0: Guía de programación de la API de Flink DataStream". ci.apache.org . Consultado el 24 de febrero de 2017 .
  23. ^ "Apache Beam". beam.apache.org . Consultado el 24 de febrero de 2017 .
  24. ^ "Matriz de capacidad de Apache Beam". beam.apache.org . Consultado el 24 de febrero de 2017 .
  25. ^ "¿Por qué Apache Beam? Una perspectiva de Google | Blog de Google Cloud Big Data y Machine Learning | Google Cloud Platform". Google Cloud Platform . Archivado desde el original el 25 de febrero de 2017. Consultado el 24 de febrero de 2017 .
  26. ^ "Documentación de Apache Flink 1.2.0: Guía de programación de la API de Flink DataSet". ci.apache.org . Consultado el 24 de febrero de 2017 .
  27. ^ "Procesamiento de flujo para todos con SQL y Apache Flink". flink.apache.org . 24 de mayo de 2016 . Consultado el 8 de enero de 2020 .
  28. ^ "Conferencia virtual Flink Forward 2020".
  29. ^ "Estratosfera". stratosphere.eu .
  30. ^ "Stratosphere - Gestión de la información en la nube". Deutsche Forschungsgemeinschaft (DFG) . Consultado el 1 de diciembre de 2023 .
  31. ^ "Estratosfera". apache.org .
  32. ^ "Detalles del proyecto para Apache Flink". apache.org .
  33. ^ "La Apache Software Foundation anuncia Apache™ Flink™ como un proyecto de alto nivel : El blog de la Apache Software Foundation". apache.org . 12 de enero de 2015.
  34. ^ "¿Encontrará el misterioso Apache Flink un lugar privilegiado en la empresa?". siliconangle.com . 9 de febrero de 2015.
  35. ^ (en alemán)
  36. ^ "Lanzamientos de emergencia de Apache Flink Log4j". flink.apache.org . Apache Software Foundation. 16 de diciembre de 2021 . Consultado el 22 de diciembre de 2021 .
  • Sitio web oficial
Retrieved from "https://en.wikipedia.org/w/index.php?title=Apache_Flink&oldid=1241456135"