Qualcuno potrebbe confrontare Flink e Spark come piattaforme per l'apprendimento automatico? Quale è potenzialmente migliore per gli algoritmi iterativi? Collegamento alla discussione generale Flink vs Spark: What is the difference between Apache Spark and Apache Flink?Apache Flink vs Apache Spark come piattaforme per l'apprendimento automatico su larga scala?
risposta
Disclaimer: Sono un membro PMC di Apache Flink. La mia risposta si concentra sulle differenze di esecuzione delle iterazioni in Flink e Spark.
Apache Spark esegue le iterazioni mediante lo srotolamento del ciclo. Ciò significa che per ogni iterazione è pianificata ed eseguita una nuova serie di attività/operatori. Spark lo fa in modo molto efficiente perché è molto valido per la pianificazione delle attività a bassa latenza (lo stesso meccanismo è utilizzato per Spark streaming btw) e memorizza i dati nella cache attraverso le iterazioni. Pertanto, ogni iterazione opera sul risultato della precedente iterazione che viene tenuta in memoria. In Spark, le iterazioni sono implementate come loop regolari (vedere Logistic Regression example).
Flink esegue i programmi con iterazioni come flussi di dati ciclici. Ciò significa che un programma di flusso di dati (e tutti i suoi operatori) è programmato una sola volta e i dati vengono inviati dalla coda di un'iterazione alla sua testa. Fondamentalmente, i dati fluiscono in cicli attorno agli operatori all'interno di un'iterazione. Poiché gli operatori sono appena programmati una volta, possono mantenere uno stato su tutte le iterazioni. L'API di Flink offre due funzioni dedicate a iteration operators per specificare iterazioni: 1) iterazioni di massa, concettualmente simili allo srotolamento del ciclo e 2) delta iterations. Le iterazioni delta possono velocizzare in modo significativo alcuni algoritmi perché il lavoro in ciascuna iterazione diminuisce con l'aumentare del numero di iterazioni. Ad esempio la decima iterazione di un'implementazione del PageRank con iterazione delta completa molto più velocemente della prima iterazione.
Grazie per la spiegazione! Ho capito bene che Flink può conservare lo stato e gli operatori sui nodi worker tra le iterazioni? Questo significa potenzialmente meno overhead sull'iterazione rispetto a Spark che invia l'attività ogni nuova iterazione? – Alexander
Sì, Flink manterrà gli operatori sui lavoratori in esecuzione (in modo da poter mantenere facilmente lo stato tra le iterazioni). E con questo, risparmia tempo nel ridistribuire i compiti per ogni iterazione. In particolare con la funzione di iterazione delta Fabian menzionata, le iterazioni (su piccole parti dei dati) che possono essere eseguite solo per pochi secondi sono possibili. –
Sembra buono! Quanto è lungo il sovraccarico fisso in Flink per ogni iterazione? Ordine di 0,1 sec? meglio? Supponiamo che l'algoritmo non stia facendo nulla, semplicemente itera. – Alexander
- 1. Apache Flink vs Twitter Airone?
- 2. zipWithIndex su Apache Flink
- 3. Apache Spark vs. Apache Storm
- 4. Apache Spark vs Apache Ignite
- 5. Qual è la differenza tra Apache Spark e Apache Flink?
- 6. Apache Drill vs Spark
- 7. Apache Phoenix vs Hive-Spark
- 8. Ordinamento globale in Apache Flink
- 9. Ingresso compresso BZip2 per Apache Flink
- 10. Spark vs Flink memoria disponibile
- 11. Uso di reduceByKey in Apache Spark (Scala)
- 12. API Apache Flink DataStream non ha una trasformazione mapPartition
- 13. Passare argomenti a Apache Spark
- 14. Come eseguire Apache Spark Source in C#
- 15. Apache Spark java.lang.ClassNotFoundException
- 16. Grado di parallelismo in Apache Flink
- 17. Impossibile usare apache flink in amazon emr
- 18. Come unire due DataFrames in Scala e Apache Spark?
- 19. Come installare Apache Zeppelin sul cluster autonomo Apache Spark
- 20. Apache Spark Stderr e Stdout
- 21. uguaglianza della classe caso in Apache Spark
- 22. Apache Spark - MlLib - Filtro collaborativo
- 23. Apache Spark ALS raccomandazioni approccio
- 24. Lambda Architecture con Apache Spark
- 25. Apache Spark on EC2 "Killed"
- 26. Utilizzando R in Apache Spark
- 27. scala vs java per Spark?
- 28. Apache Spark: distinto non funziona?
- 29. Chiavi primarie con Apache Spark
- 30. GWT vs Apache Wicket
Flink è un progetto relativamente giovane ed è difficile confrontare questo nuovo promettente quadro con un progetto così gigantesco come Spark. – ipoteka
Non risponderò a questa domanda ora perché avremo uno sguardo più approfondito nel prossimo futuro su entrambi i framework ML. Per ora sono totalmente d'accordo con @ipoteka. –
Dovresti controllare la libreria di apprendimento automatico recentemente creata da Flink: http://ci.apache.org/projects/flink/flink-docs-master/libs/ml/. Come potete vedere qui, abbiamo programmato di fare molto di più: http://goo.gl/h9Qmt3 –