2015-04-28 14 views

risposta

12

Disclaimer: Sono un membro committente e PMC di Apache Flink.

Simile a Hadoop MapReduce, Apache Flink è un processore di dati parallelo con una propria API e motore di esecuzione. Flink mira a supportare molti dei casi d'uso in cui Hadoop viene utilizzato e funziona bene con molti sistemi dell'ecosistema Hadoop, tra cui HDFS e YARN.

Risponderò alla tua domanda distinguendo tra il modello di programmazione MapReduce e il modello di esecuzione MapReduce.

modello di programmazione

modello di programmazione di Apache Flink si basa su concetti del modello di programmazione MapReduce ma generalizza in diversi modi. Flink offre funzioni Map e Reduce ma anche trasformazioni aggiuntive come Join, CoGroup, Filter e Iterations. Queste trasformazioni possono essere assemblate in flussi di dati arbitrari tra cui più fonti, sink, flussi di ramificazione e fusione. Il modello di dati di Flink è più generico del modello di coppia chiave-valore di MapReduce e consente di utilizzare qualsiasi tipo di dati Java (o Scala). Le chiavi possono essere definite su questi tipi di dati in modo flessibile.

Di conseguenza, il modello di programmazione di Flink è un super set del modello di programmazione MapReduce. Permette di definire molti programmi in un modo molto più pratico e conciso. Voglio anche sottolineare che è possibile incorporare funzioni Hadoop non modificate (Input/OutputFormats, Mapper, Reducers) nei programmi Flink ed eseguirle insieme alle funzioni native di Flink.

Execution Model

Guardando il modello di esecuzione, Flink prende in prestito molti concetti da sistemi di database relazionali paralleli. Flink presenta un modello di elaborazione pipeline che riduce la necessità di materializzare risultati intermedi su file system locali o distribuiti (inoltre, ciò consente anche a Flink di eseguire l'elaborazione del flusso in tempo reale). Inoltre, l'esecuzione di un programma Flink non è strettamente legata alle specifiche del programma. In MapReduce (come fatto da Apache Hadoop), l'esecuzione di ogni programma MapReduce segue esattamente lo stesso schema. I programmi Flink vengono forniti a un ottimizzatore che individua un piano di esecuzione efficiente. Analogamente al DBMS relazionale, l'ottimizzatore sceglie la spedizione dei dati e le strategie di join in modo tale da evitare operazioni costose quali il mescolamento dei dati e l'ordinamento. Dovrei sottolineare che Flink non è stato testato alla grande scala in cui Hadoop sta girando. Conosco le configurazioni di Flink che funzionano su fino a 200 nodi.

3

aggiunta alla risposta di Fabian:

Un'altra differenza è che Flink non è un sistema di elaborazione batch puro, ma può allo stesso tempo per l'analisi a bassa latenza streaming e offre una bella API per definire in streaming programmi di analisi .

Internamente, Flink è in realtà un sistema di streaming. Per Flink, i programmi Batch sono un caso speciale di programmi di streaming.

Problemi correlati