Apache Flink
Apache Flink és un marc de treball de codi obert i unificat per al processament de fluxos i per lots, desenvolupat per l'Apache Software Foundation. El nucli d'Apache Flink és un motor de flux de dades distribuït escrit en Java i Scala.[1][2] Flink executa programes de flux de dades arbitraris de manera paral·lela a les dades i en pipeline (d'aquí, paral·lela a les tasques). El sistema d'execució pipeline de Flink permet l'execució de programes de processament en bloc/per lots i en fluxos.[3][4] A més, el temps d'execució de Flink admet l'execució d'algoritmes iteratius de forma nativa. Flink proporciona un motor de transmissió d'alt rendiment i baixa latència així com compatibilitat amb el processament en temps d'esdeveniments i la gestió d'estats. Les aplicacions Flink són tolerants a errors en cas de fallada de la màquina i admeten semàntiques exactament una vegada. Els programes es poden escriure en Java, Python[5] i SQL[6] i es compilen i optimitzen automàticament en programes de flux de dades que s'executen en un entorn de clúster o núvol. Flink no proporciona el seu propi sistema d'emmagatzematge de dades, però proporciona connectors de font de dades i de pica a sistemes com ara Apache Doris, Amazon Kinesis, Apache Kafka, HDFS, Apache Cassandra i ElasticSearch.[7] DesenvolupamentApache Flink està desenvolupat sota la llicència Apache 2.0[8] per la comunitat Apache Flink dins de l'Apache Software Foundation. El projecte està impulsat per 119[9] contribuents i més de 340 col·laboradors. Visió generalEl model de programació de flux de dades d'Apache Flink proporciona processament esdeveniment a esdeveniment en conjunts de dades finits i infinits. A un nivell bàsic, els programes Flink consisteixen en fluxos i transformacions. "Conceptualment, un flux és un flux (potencialment interminable) de registres de dades, i una transformació és una operació que pren un o més fluxos com a entrada i produeix un o més fluxos de sortida com a resultat."[10] Apache Flink inclou dues API principals: una API DataStream per a fluxos de dades limitats o no limitats i una API DataSet per a conjunts de dades limitats. Flink també ofereix una API Table, que és un llenguatge d'expressions similar a SQL per al processament de fluxos relacionals i per lots que es pot integrar fàcilment a les API DataStream i DataSet de Flink. El llenguatge de nivell més alt compatible amb Flink és SQL, que és semànticament similar a l'API Table i representa programes com a expressions de consulta SQL. Model de programació i temps d'execució distribuïtEn executar-se, els programes Flink es mapen a fluxos de dades en temps real.[11] Cada flux de dades Flink comença amb una o més fonts (una entrada de dades, per exemple, una cua de missatges o un sistema de fitxers) i acaba amb un o més receptors (una sortida de dades, per exemple, una cua de missatges, un sistema de fitxers o una base de dades). Es pot realitzar un nombre arbitrari de transformacions al flux. Aquests fluxos es poden organitzar com un graf de flux de dades acíclic dirigit, que permet a una aplicació ramificar i fusionar fluxos de dades. Flink ofereix connectors de font i sumidero prefabricats amb Apache Kafka, Amazon Kinesis,[12] HDFS, Apache Cassandra i més.[13] Els programes Flink s'executen com un sistema distribuït dins d'un clúster i es poden implementar de manera autònoma, així com en configuracions basades en YARN, Mesos i Docker, juntament amb altres marcs de gestió de recursos.[14] Estat: Punts de control, punts de desament i tolerància a errorsApache Flink inclou un mecanisme lleuger de tolerància a fallades basat en punts de control distribuïts. Un punt de control és una instantània automàtica i asíncrona de l'estat d'una aplicació i la seva posició en un flux font. En cas d'error, un programa Flink amb els punts de control habilitats, després de la recuperació, reprendrà el processament des de l'últim punt de control completat, garantint que Flink mantingui la semàntica d'estat exactament una vegada dins d'una aplicació. El mecanisme de punts de control exposa ganxos perquè el codi de l'aplicació inclogui també sistemes externs al mecanisme de punts de control (com ara obrir i confirmar transaccions amb un sistema de base de dades). Flink també inclou un mecanisme anomenat punts de desament, que són punts de control activats manualment.[15] Un usuari pot generar un punt de desament, aturar un programa Flink en execució i, a continuació, reprendre el programa des del mateix estat de l'aplicació i posició al flux. Els punts de desament permeten actualitzacions a un programa Flink o a un clúster Flink sense perdre l'estat de l'aplicació. A partir de Flink 1.2, els punts de desament també permeten reiniciar una aplicació amb un paral·lelisme diferent, cosa que permet als usuaris adaptar-se a les càrregues de treball canviants. API de DataStreamL'API DataStream de Flink permet transformacions (per exemple, filtres, agregacions, funcions de finestra) en fluxos de dades limitats o no limitats. L'API DataStream inclou més de 20 tipus diferents de transformacions i està disponible a Java i Scala.[16] API del conjunt de dadesL'API DataSet de Flink permet transformacions (per exemple, filtres, mapatge, unió, agrupació) en conjunts de dades delimitats. L'API DataSet inclou més de 20 tipus diferents de transformacions.[17] L'API està disponible a Java, Scala i una API experimental de Python. L'API DataSet de Flink és conceptualment similar a l'API DataStream. Aquesta API està obsoleta a la versió 2.0 de Flink.[18] API de taules i SQLL'API Table de Flink és un llenguatge d'expressió similar a SQL per al processament de fluxos relacionals i per lots que es pot integrar a les API Java i Scala DataSet i DataStream de Flink. L'API Table i la interfície SQL operen sobre una abstracció de taula relacional. Les taules es poden crear a partir de fonts de dades externes o a partir de DataStreams i DataSets existents. L'API Table admet operadors relacionals com ara selecció, agregació i unions a les taules. Les taules també es poden consultar amb SQL normal. L'API de taules i SQL ofereixen una funcionalitat equivalent i es poden combinar en el mateix programa. Quan una taula es torna a convertir en un conjunt de dades o un flux de dades, el pla lògic, que es va definir mitjançant operadors relacionals i consultes SQL, s'optimitza mitjançant Apache Calcite i es transforma en un programa DataSet o DataStream.[19] Flink endavantFlink Forward és una conferència anual sobre Apache Flink. La primera edició de Flink Forward va tenir lloc el 2015 a Berlín. La conferència de dos dies va comptar amb més de 250 assistents de 16 països. Les sessions es van organitzar en dues seccions amb més de 30 presentacions tècniques de desenvolupadors de Flink i una secció addicional amb formació pràctica sobre Flink. El 2016, 350 participants van assistir a la conferència i més de 40 ponents van presentar xerrades tècniques en 3 sessions paral·leles. El tercer dia, els assistents van ser convidats a participar en sessions pràctiques de formació. El 2017, l'esdeveniment també es va expandir a San Francisco. El dia de la conferència es va dedicar a xerrades tècniques sobre com s'utilitza Flink a l'empresa, els aspectes interns del sistema Flink, les integracions de l'ecosistema amb Flink i el futur de la plataforma. Va incloure conferències magistrals, xerrades d'usuaris de Flink de la indústria i el món acadèmic, i sessions pràctiques de formació sobre Apache Flink. El 2020, arran de la pandèmia de la COVID-19, l'edició de primavera de Flink Forward, que s'havia de celebrar a San Francisco, es va cancel·lar. En canvi, la conferència es va celebrar virtualment, començant el 22 d'abril i concloent el 24 d'abril, amb conferències magistrals en directe, casos d'ús de Flink, funcionament intern d'Apache Flink i altres temes sobre processament de fluxos i anàlisi en temps real.[20] El 2024, Flink Forward[21] va tornar a Berlín, el seu lloc de naixement, pel 10è aniversari. La conferència va destacar els nous plans de Flink 2.0, on s'abandona Java 8 i s'introdueix un nou backend d'estat. També es va presentar Flink CDC[22], que permet fluxos autoritzats en yaml sense codi. També hi va haver una sessió sobre l'adopció d'OpenLineage per part de Flink.[23] HistòriaEl 2010, el projecte de recerca "Stratosphere: Gestió de la informació al núvol"[24] dirigit per Volker Markl (finançat per la Fundació Alemanya per a la Recerca (DFG))[25] es va iniciar com a col·laboració entre la Technische Universität Berlin, la Humboldt-Universität zu Berlin i el Hasso-Plattner-Institut Potsdam. Flink va començar a partir d'una bifurcació del motor d'execució distribuïda d'Stratosphere i es va convertir en un projecte d'Apache Incubator el març de 2014.[26] El desembre de 2014, Flink va ser acceptat com a projecte de nivell superior d'Apache.[27][28][29] Referències
|