2015-01-22 24 views

risposta

257

All'inizio cosa hanno in comune? Flink e Spark sono entrambe piattaforme di elaborazione dati di uso generale e progetti di alto livello di Apache Software Foundation (ASF). Hanno un ampio campo di applicazione e sono utilizzabili per dozzine di scenari di big data. Grazie a espansioni come query SQL (Spark: Spark SQL, Flink: MRQL), elaborazione grafica (Spark: GraphX, Flink: Spargel (base) e Gelly (libreria)), machine learning (Spark: MLlib, Flink: Flink ML) e elaborazione stream (Spark Streaming, Flink Streaming). Entrambi sono in grado di funzionare in modalità standalone, eppure molti li usano su Hadoop (YARN, HDFS). Condividono una prestazione forte a causa della loro natura di memoria.

Tuttavia, il modo in cui ottengono questa varietà e i casi in cui sono specializzati differiscono.

Differenze: In un primo momento mi piacerebbe fornire due link che vanno in dettaglio sulle differenze tra Flink e Spark prima di riassumere in su. Se avete il tempo di dare un'occhiata al Apache Flink is the 4G of BigData Analytics Framework e Flink and Spark Similarities and Differences

In contrasto con Flink, Spark non è in grado di gestire insiemi di dati più grande della RAM prima della versione 1.5.x

Flink è ottimizzato per ciclico o processi iterativi utilizzando trasformazioni iterative sulle raccolte. Ciò è possibile grazie all'ottimizzazione degli algoritmi di join, al concatenamento e al riutilizzo dell'operatore del partizionamento e dell'ordinamento. Tuttavia, Flink è anche un potente strumento per l'elaborazione in batch. Flink streaming elabora i flussi di dati come veri flussi, ovvero gli elementi di dati vengono immediatamente "inviati in pipeline" attraverso un programma di streaming non appena arrivano. Ciò consente di eseguire operazioni di finestre flessibili su flussi. È persino in grado di gestire i dati in ritardo nei flussi mediante l'utilizzo di filigrane. Inoltre Flink fornisce una modalità compatibile molto forte, che rende possibile utilizzare la tempesta esistente, carta ridurre, ... codice a motore di esecuzione flink

Spark invece si riferiscono al set di dati distribuiti elastici (RDDs) . Questa (soprattutto) infrastruttura in memoria dà il potere di innescare paradigmi di programmazione funzionale. È in grado di eseguire calcoli su grandi lotti bloccando la memoria. Spark streaming avvolge i flussi di dati in mini-batch, cioè raccoglie tutti i dati che arrivano entro un certo periodo di tempo e esegue un programma batch regolare sui dati raccolti. Mentre il programma batch è in esecuzione, vengono raccolti i dati per il prossimo mini-batch.

Will Flink sostituisce Hadoop?

No, non lo farà.Hadoop consiste di diverse parti:

  • HDFS - Hadoop file system distribuito
  • FILO - Ancora un altro Resource Negotiator (o Resource Manager)
  • MapReduce - quadro elaborazione lotto di Hadoop

HDFS e YARN sono ancora necessari come parte integrante dei cluster BigData. Questi due stanno costruendo la base per altre tecnologie distribuite come motori di query distribuiti o database distribuiti. Il caso d'uso principale per MapReduce è l'elaborazione in batch per set di dati più grandi della RAM del cluster mentre Flink è progettato per lo streaming e l'elaborazione iterativa. Quindi, in generale, questi due possono coesistere anche se consiglio vivamente di andare con le funzionalità di batch più forti e più facili da usare.

+2

Flink funziona anche con RDBMS/NOsql come server Sql e MongoDB – virender

+1

Flink è un sistema distribuito scalabile. Tenere presente che il loro è un alto rischio di errori di sistema e perdita di dati durante la scrittura di output su sistemi come SQL server.In entrambi i casi, è possibile scrivere formati/connettori di output per l'output su altri sistemi. (se questa risposta ti ha aiutato a prendere in considerazione la possibilità di votare.) –

+5

Le iterazioni non sono l'obiettivo principale di Flink. Flink supporta l'elaborazione in batch proprio come fa Spark. Sebbene Flink possa funzionare autonomamente, di solito viene eseguito su un'installazione HDFS per leggere/scrivere file distribuiti. Inoltre, Flink può essere eseguito con il supporto YARN e consentire a YARN di gestire le risorse del cluster. – mxm

13

I programmi di Flink sono ottimizzati dall'ottimizzatore basato sui costi (ad esempio, motori SQL). Pertanto, le applicazioni Flink dovranno essere riconfigurate e sottoposte a manutenzione ogni volta che le caratteristiche del cluster cambiano e i dati si evolvono nel tempo.

42

Come da Apache Flink & Spark pagine di documentazione:

Apache Flink è una piattaforma open source per il flusso distribuita e l'elaborazione dei dati in batch

Apache Spark ™ è un motore veloce e generale su larga scala elaborazione dati.

tempo reale stream processing è USP di Apache Flink.

Flink fornisce API espressive che consentono ai programmatori di sviluppare rapidamente applicazioni di dati in streaming.

Flink è costruito per essere un buon FILATO cittadino (che scintilla non si è ancora del tutto raggiunto), e può eseguire esistente MapReduce posti di lavoro direttamente sul suo motore di esecuzione.

Dai un'occhiata a questa palude di infoworld article inviata da Ian Pointer per ulteriori dettagli.

chiave differences dal blog pubblicato da VON Hans-Peter ZORN UND Jasir EL-Sobhy

  1. stream processing: Mentre Spark è un sistema di lotti oriented che opera su blocchi di dati, chiamati RDDs, Apache Flink è un sistema di elaborazione del flusso in grado di elaborare riga dopo riga in tempo reale.
  2. Iterations: Sfruttando la sua architettura di streaming, Flink consente di eseguire iterazioni in modo nativo sui dati, qualcosa Spark supporta anche solo come lotti
  3. Gestione Memoria: Spark posti di lavoro devono essere ottimizzato e adattato alle serie di dati specifici perché è necessario controllare manualmente il partizionamento e la cache se si vuole farlo bene
  4. Maturità: Flink è ancora nella sua infanzia e ha, ma un paio di distribuzioni di produzione
  5. dati di flusso: In contrasto con il paradigma di programmazione procedurale Flink segue un approccio di flusso di dati distribuiti. Per i dati impostati operazioni in cui sono richiesti i risultati intermedi in aggiunta al normale ingresso di un'operazione, le variabili di trasmissione vengono utilizzati per distribuire il pre risultati calcolati per tutti i nodi lavoratori

Per quanto riguarda la seconda domanda, FlinkSpark può sostituire Hadoop.

Flink è un sostituto di Hadoop MapReduce; che funziona sia in modalità batch che streaming, eliminando la mappa e riducendo i lavori a favore di un approccio grafico diretto che sfrutta la memoria in-memory per massicci guadagni in termini di prestazioni.

HDFS (Hadoop Distributed File System)e filati (Yet Another Resource Negotiator), che fanno parte del grande ecosistema Hadoop non può essere sostituito da Flink

Date un'occhiata a questo flink-vs-spark presentazione di Slim Baltagi, direttore di Big Data Engineering, Capital One.

+3

* "Puoi confrontare Apache Flink con un solo modulo di Spark: il modulo Streaming di Apache Spark" * Non sono d'accordo. L'API DataSet di Flink per l'elaborazione in batch offre funzionalità molto simili rispetto alle funzionalità batch di Spark. Ci sono ovviamente differenze in ciò che entrambi i sistemi supportano (iterazione nativa, analisi interattiva, ...) e l'ecosistema di Spark è più grande, ma Flink è chiaramente più di un processore di streaming. –

+0

Rimosso solo un modulo come da suggerimento. –

6

Flink di una delle caratteristica unica è, trasformazione out-of-order flussi di dati utilizzando Watermarks

1

Spark fornisce pressi di streaming in tempo reale grazie all'architettura micro-dosaggio che Apache Flink fornisce una vera tempo reale streamig causa streamig puro architettura basata su Kappa Architecture. Ciò è dimostrato da Yahoo Streammark Benchmark Application e poi ancora da un'applicazione di streaming yahoo estesa. Passa attraverso il video che spiega questo dettaglio e mi ha aiutato a capirlo. https://www.youtube.com/watch?v=WTBsMTpR-mE

10

Dal punto di vista di uno sviluppatore:

Al momento: Se si desidera ottenere un lavoro il più velocemente possibile nel grande ambiente di dati, imparare Spark, perché è in gran parte utilizzato sul mercato.

Ma a mio parere Flink è la scelta migliore, perché non devo affrontare così tanti problemi di "esaurimento della memoria" durante lo sviluppo. Flink ha il suo Memory Manager, quindi in generale non è necessario preoccuparsene.

Problemi correlati