Apache Flink è un motore distribuito open source per l'elaborazione dello stato su set di dati illimitati (flussi) e limitati (batch). Le applicazioni di elaborazione dei flussi sono progettate per funzionare in modo continuo, con tempi di inattività minimi ed elaborare i dati non appena vengono inseriti. Apache Flink è progettato per l'elaborazione a bassa latenza, l'esecuzione di calcoli in memoria, l'elevata disponibilità, la rimozione di singoli punti di errore e la capacità di dimensionare orizzontalmente.

Le funzionalità di Apache Flink includono la gestione avanzata dello stato con garanzie di coerenza exactly-once, la semantica dell'elaborazione in tempo reale con sofisticata gestione dei dati fuori ordine e tardiva. Apache Flink è stato sviluppato per lo streaming e offre un'interfaccia di programmazione unificata per l'elaborazione in streaming e in batch.

Grazie all'ampia gamma di funzionalità, Apache Flink viene utilizzato per creare molti tipi diversi di applicazioni di streaming e batch.
Alcuni tipi di applicazioni più comuni basate su Apache Flink sono:

  • Applicazioni basate su eventi, importazione di eventi da uno o più flussi di eventi ed esecuzione di calcoli, aggiornamenti di stato o azioni esterne. L'elaborazione con stato consente di implementare una logica che supera la trasformazione a messaggio singolo, in cui i risultati dipendono dalla cronologia degli eventi importati.
  • Applicazioni di analisi dei dati, che estraggono informazioni e approfondimenti dai dati. Generalmente, queste applicazioni interrogano set di dati finiti e rieseguono le query, o modificano i risultati per incorporare nuovi dati. Con Apache Flink, l'analisi può essere eseguita aggiornando continuamente, trasmettendo query in streaming o elaborando gli eventi importati in tempo reale, emettendo e aggiornando continuamente i risultati.
  • Applicazioni di pipeline di dati, che trasformano e arricchiscono i dati da spostare da un'archiviazione di dati all'altra. Di solito, la fase di estrazione, trasformazione e caricamento (ETL) viene eseguita periodicamente, in batch. Con Apache Flink, il processo può svolgersi in modo continuo, spostando i dati con bassa latenza verso la loro destinazione.

Flink è un motore di elaborazione di flussi ad alta velocità di trasmissione effettiva e bassa latenza. Un'applicazione Flink è costituita da un grafico di flusso di dati aciclico complesso arbitrario, composto da flussi e trasformazioni. I dati vengono importati da una o più origini dati e inviati a una o più destinazioni. I sistemi di origine e destinazione possono essere flussi, code di messaggi o datastore e includere file, database e motori di ricerca più comuni. Le trasformazioni possono essere basate sullo stato, come le aggregazioni in finestre temporali o il rilevamento di modelli complessi. 

La tolleranza ai guasti è possibile grazie a due meccanismi distinti: checkpoint automatico e periodico dello stato dell'applicazione, copiato su un'archiviazione persistente, per consentire il ripristino automatico in caso di errore; punti di salvataggio on demand, che salvano un'immagine coerente dello stato di esecuzione per consentire l'arresto e la ripresa, l'aggiornamento o il fork del processo Flink, mantenendo lo stato dell'applicazione a seguito di arresti e riavvii. I meccanismi di checkpoint e punti di salvataggio sono asincroni e scattano uno snapshot coerente dello stato senza “fermare la giostra” mentre l'applicazione continua a elaborare gli eventi.

Elabora set di dati illimitati (flussi) e limitati (batch)

Apache Flink può elaborare set di dati illimitati e limitati, ad esempio flussi e dati in batch. I flussi illimitati hanno un inizio ma sono praticamente infiniti. L'elaborazione potrebbe, teoricamente, non interrompersi mai.

I dati limitati, come le tabelle, sono finiti e possono essere elaborati dall'inizio alla fine in un tempo limitato.
Apache Flink fornisce algoritmi e strutture di dati per supportare l'elaborazione limitata e illimitata tramite la stessa interfaccia di programmazione. Le applicazioni che elaborano dati illimitati vengono eseguite continuamente. L'esecuzione delle applicazioni che elaborano dati limitati terminerà quando avranno raggiunto la fine dei set di dati di input.

Esecuzione di applicazioni su vasta scala

Apache Flink è progettato per eseguire applicazioni con stato praticamente su qualsiasi scala. L'elaborazione è parallelizzata a migliaia di attività, distribuite su più macchine contemporaneamente.

Lo stato è inoltre partizionato e distribuito orizzontalmente, consentendo di gestire diversi terabyte su più macchine. Lo stato è indirizzato verso un’archiviazione persistente in modo incrementale.

Prestazioni in memoria

I dati che fluiscono attraverso l'applicazione e lo stato vengono partizionati su più macchine. Pertanto, il calcolo può essere completato accedendo ai dati locali, spesso in memoria.

Coerenza exactly-once dello stato

Le applicazioni che vanno oltre le trasformazioni di un singolo messaggio sono basate sullo stato. È importante che logica aziendale ricordi eventi o risultati intermedi. Apache Flink garantisce la coerenza dello stato interno, anche in caso di guasto e in fase di arresto e il riavvio dell'applicazione. L'effetto di ogni messaggio sullo stato interno viene applicato sempre esattamente una volta, indipendentemente dal fatto che l'applicazione possa ricevere duplicati dall'origine dati al momento del ripristino o del riavvio.

Ampia gamma di connettori

Apache Flink dispone di una serie di connettori collaudati per i più diffusi sistemi di messaggistica e streaming, archivi dati, motori di ricerca e file system. Alcuni esempi sono Apache Kafka, il flusso di dati Amazon Kinesis, Amazon SQS, Active MQ, Rabbit MQ, NiFi, OpenSearch ed ElasticSearch, DynamoDB, HBase e qualsiasi database che fornisce client JDBC.

Livelli multipli di astrazione

Apache Flink offre livelli multipli di astrazione per l'interfaccia di programmazione, a partite dalle API SQL e Table per streaming di livello superiore, all'utilizzo di astrazioni note come table, join e group by. L'API DataStream offre un livello di astrazione inferiore ma anche un maggiore controllo, con la semantica dei flussi, delle finestre e della mappatura. Infine, l'API ProcessFunction offre un controllo preciso sull'elaborazione di ogni messaggio e il controllo diretto dello stato. Tutte le interfacce di programmazione funzionano perfettamente con set di dati illimitati (flussi) e limitati (tabelle). È possibile utilizzare diversi livelli di astrazione nella stessa applicazione come strumento idoneo per risolvere qualsiasi problema.

Linguaggi di programmazione multipli

Apache Flink può essere programmato con più linguaggi, da SQL per streaming ad alto livello, a Python, Scala, Java, ma anche altri linguaggi JVM come Kotlin.

I casi d'uso di Apache Flink includono:

  • Il rilevamento delle frodi, il rilevamento delle anomalie, gli avvisi basati su regole, la personalizzazione dell'esperienza utente in tempo reale sono esempi di casi d'uso per applicazioni basate sugli eventi. Flink è la soluzione perfetta per tutti questi casi d'uso che richiedono l'elaborazione di flussi di eventi in modo statico, la valutazione dell'evoluzione nel tempo, il rilevamento di modelli complessi o il calcolo di statistiche per lassi temporali per rilevare deviazioni dalle soglie previste.

  • Il monitoraggio della qualità, l'analisi ad hoc dei dati in tempo reale, l'analisi del clickstream, la valutazione degli esperimenti sui prodotti sono casi d'uso dell'analisi dello streaming che Flink è in grado di supportare in modo efficiente. Sfruttando l'elevato livello di astrazione di SQL o dell'interfaccia di programmazione Table API, puoi eseguire le stesse analisi sia sullo streaming di dati in tempo reale sia su batch di dati storici.

  • Il monitoraggio del file system e la scrittura dei dati in un log, la materializzazione di un flusso di eventi in un database, la creazione e il perfezionamento incrementali di un indice di ricerca sono casi d'uso supportati in modo efficiente dall'ETL continuo. Sfruttando l'ampia gamma di connettori, Flink può leggere direttamente da diversi tipi di archivi dati, importare flussi di eventi di modifica e persino acquisire direttamente le modifiche. Con l'importazione e l'elaborazione continua delle modifiche e l'aggiornamento diretto dei sistemi di destinazione, Flink può ridurre il ritardo della sincronizzazione dei dati a secondi o anche meno.

Norton LifeLock

NortonLifeLock è una società globale di sicurezza informatica e privacy su Internet che offre servizi a milioni di clienti per la sicurezza dei dispositivi e l'identità e la privacy online per l'abitazione e le famiglie.

NortonLifeLock offre agli utenti un prodotto VPN come servizio freemium. C'era il bisogno di applicare limiti di utilizzo in tempo reale per evitare che gli utenti freemium usufruissero del servizio una volta superato il limite. Riuscire a farlo in modo affidabile e conveniente rappresentava una sfida per NortonLifeLock.

NortonLifeLock ha semplificato l'implementazione dell'aggregazione a livello di utente e dispositivo adottando Apache Flink.

Samsung SmartThings

In qualità di filiale indipendente di Samsung, SmartThings è uno dei principali ecosistemi IoT al mondo, capace di fornire a tutti il modo più semplice per creare una casa intelligente.

Samsung SmartThings riscontrava problemi relativi alla disponibilità delle risorse per le singole applicazioni. Ciò ha causato un ritardo e un peggioramento delle prestazioni durante l'elaborazione dei dati, con conseguente aumento dei costi generali per la gestione dei carichi di lavoro durante le operazioni. È stato necessario riprogettare la piattaforma dati,

passando da Apache Spark ad Apache Flink.

Gruppo BT

BT Group è il principale fornitore di telecomunicazioni e reti del Regno Unito e un fornitore leader di servizi e soluzioni di comunicazione globali, con clienti in 180 paesi. Le sue attività principali nel Regno Unito comprendono la fornitura di telefonia fissa, mobile, banda larga e TV (incluso lo sport) e una gamma di prodotti e servizi su reti fisse e mobili convergenti a clienti privati, aziendali e del settore pubblico.

BT aveva bisogno di un'applicazione di monitoraggio dei servizi per supportare il lancio di Digital Voice, il suo nuovo prodotto di consumo che consente chiamate vocali ad alta definizione sulla sua rete a banda larga del Regno Unito.

BT ha creato un servizio di analisi basato sugli eventi utilizzando Apache Flink, per acquisire, elaborare e visualizzare i dati del servizio.

Autodesk

Autodesk, un fornitore leader nel mercato di software per la progettazione e l'ingegneria 3D, desidera andare oltre la creazione e la distribuzione di software. Desidera garantire ai suoi milioni di utenti la migliore esperienza possibile nell'esecuzione di tale software.

Autodesk crea software per chi crea prodotti. Serve oltre 200 milioni di clienti. Il loro obiettivo era eliminare i silos per individuare e risolvere più rapidamente i problemi dei clienti. Erano alla ricerca di un procedimento per raccogliere e misurare le metriche in modo coerente, con il lavoro di un piccolo team operativo e senza aumentare i costi o creare un lock-in dei dati.

NHL

La National Hockey League è la seconda più antica delle quattro principali leghe professionistiche di squadra del Nord America. Oggi, la NHL è composta da 32 club membri, ognuno dei quali riflette la composizione internazionale della Lega, con giocatori provenienti da più di 20 paesi rappresentati nelle rose delle squadre.

La NHL stava affrontando diverse sfide tecniche, tra cui la definizione delle funzionalità richieste e di metodi di modellazione per prevedere un evento caratterizzato da grande incertezza e determinare come utilizzare i dati in streaming dei sensori PPT per identificare il punto in cui si sta verificando uno scontro, i giocatori coinvolti e la loro probabilità di successo, il tutto in un intervallo di centinaia di millisecondi.

Sfruttando Apache Flink, la NHL è stata in grado non solo di prevedere il vincitore di un contrasto, ma anche di gettare le basi per risolvere una serie di problemi simili in tempo reale e in modo conveniente.

Poshmark

Poshmark è un marketplace social leader nel settore moda di prima e seconda mano per donne, uomini, bambini, articoli per animali domestici, per la casa e altro ancora. La community di oltre 80 milioni di persone negli Stati Uniti, in Canada, Australia e India sta plasmando il futuro dello shopping in chiave semplice, social e sostenibile.

Poshmark ha puntato a una crescita del fatturato attraverso la personalizzazione e il miglioramento dell'esperienza utente. L'approccio iniziale, basato sull'utilizzo dell'elaborazione in batch per la personalizzazione e la sicurezza, non ha soddisfatto le aspettative di miglioramento dell'esperienza del cliente.

Poshmark ha quindi progettato una personalizzazione in tempo reale utilizzando l'arricchimento dei dati in tempo reale con Apache Flink.

Il Servizio gestito da Amazon per Apache Flink è una soluzione completamente gestita per eseguire applicazioni Apache Flink. Il servizio gestito da Amazon per Apache Flink riduce la complessità della creazione, della gestione e dell'integrazione delle applicazioni Apache Flink con altri servizi AWS. Con il servizio gestito da Amazon per Apache Flink non sono previsti server da gestire, tariffe minime o costi di configurazione. La configurazione è altamente disponibile per impostazione predefinita. Lo stato dell'applicazione è completamente gestito e archiviato in un backend a elevata durabilità per la tolleranza ai guasti. L'applicazione è controllata con una semplice API, per arrestare, avviare, configurare e dimensionare l'applicazione.

Il Servizio gestito da Amazon per Apache Flink Studio offre un'interfaccia notebook interattiva per Apache Flink. Utilizzando un notebook Apache Zeppelin, puoi eseguire codici SQL, Python e Scala su Apache Flink, per lo sviluppo e la sperimentazione, l'ispezione o la visualizzazione dei dati.

Amazon EMR supporta anche Apache Flink come applicazione YARN in modo da poter gestire le risorse, insieme all'esecuzione di altre applicazioni all'interno del cluster.

Apache Flink offre supporto nativo per Kubernetes. Puoi utilizzare un host personale per Apache Flink in un ambiente containerizzato come Amazon Elastic Kubernetes Service (Amazon EKS) o gestirlo in maniera completamente autonoma utilizzando Amazon Elastic Compute Cloud (Amazon EC2).

Inizia a utilizzare Apache Flink su AWS creando un account oggi stesso.

Fasi successive su AWS

Registrati per creare un account gratuito

Ottieni accesso istantaneo al Piano gratuito di AWS.

Registrati 
Inizia a lavorare nella console

Inizia subito a creare nella Console di gestione AWS.

Accedi