DAG (gerichteter azyklischer Graph) Ausführung von Big Data ist üblich. Ich frage mich, wie Apache Flink die Iterationen implementiert. Weil es ein zyklischer Graph sein kann.Wie Apache Flink Iterationen implementieren?
Antwort
Wenn Flink iterative Programme ausführt, ist das Datenflussdiagramm kein DAG, sondern ermöglicht Zyklen. Diese Zyklen sind jedoch nicht willkürlich und müssen einem bestimmten Muster folgen, damit Flink diesen zyklischen Fluss zu einem gewissen Grad kontrollieren kann.
In anderen Systemen gibt es oft keinen strengen technischen Grund dafür, Zyklen nicht zu unterstützen. Das allgemeine Zulassen von Zyklen ist normalerweise verboten, da dies zu einer Endlosschleife führen kann (dh ein Tupel dreht den Zyklus für immer und das Programm wird nicht terminiert).
Flink verfolgt den Zyklus, indem er die Anzahl der Iterationen zählt. Auf diese Weise kann Flink verfolgen, welche Tupel zu welcher Iteration gehören und beispielsweise vermeiden, dass Tupel von neuer Iteration einmal Tupel von älteren "übernehmen". Außerdem kann Flink erkennen, ob das Ergebnis der Iteration n
und n+1
gleich ist oder nicht. Ein gleiches Ergebnis zeigt eine beendete Berechnung an, die es Flink erlaubt, die Endlosschleife zu unterbrechen und zu beenden (dies gilt für sogenannte Fixpunkt-Iterationen).
Eine ausführliche Lese Blick auf diese Forschungsarbeit: https://dl.acm.org/citation.cfm?id=2350245
Die Verwendung von Iteration in Ihrem Programm hier beschrieben wird: https://ci.apache.org/projects/flink/flink-docs-release-0.10/apis/programming_guide.html#iteration-operators
- 1. zipWithIndex auf Apache Flink
- 2. Apache Flink - groupBy
- 3. Apache Flink Fenster Bestellung
- 4. Apache Flink DataSet Differenz-/Subtraktionsoperation
- 5. Broadcast-Funktionalität in Apache Flink mit Java
- 6. Globale Sortierung in Apache Flink
- 7. Apache Flink vs Twitter Heron?
- 8. Apache Flink: Wie werden späte Ereignisse gehandhabt?
- 9. Apache Flink - Summe und gruppiert halten
- 10. BZip2 komprimierter Eingang für Apache Flink
- 11. Verwendung von Apache Flink und RxJava
- 12. Abfrage von Daten von Apache Flink
- 13. Mit einem Kollektionen $ UnmodifiableCollection mit Apache Flink
- 14. Grad der Parallelität in Apache Flink
- 15. Apache Flink Union Operator geben falsche Antwort
- 16. Apache Flink Import scala api Streaming-Erweiterungen
- 17. Apache Flink + CEP - Erkenne gleiche Ereignisse
- 18. Apache Flink DataStream-API hat keine mapPartition-Umwandlung
- 19. Kann nicht Fluss zu HA-Cluster von CLI Apache Flink mit Flink
- 20. Ist es möglich, Riak CS mit Apache Flink zu verwenden?
- 21. Wird Apache Flink Timer nach einem Fehler wiederherstellen?
- 22. Apache Flink JDBC InputFormat werfen java.net.SocketException: Socket geschlossen
- 23. Apache Flink - Zuweisen einer eindeutigen ID zum Eingang
- 24. Get JSON Elemente aus einem Web mit Apache Flink
- 25. Apache Flink CEP-Timout-Muster im Zeitfenster nicht definiert
- 26. Kann Flink Ergebnisse in mehrere Dateien schreiben (wie Hadoops MultipleOutputFormat)?
- 27. /windowApache Flink-Kettenoperatoren
- 28. flink Stream-NoSuchMethodError: org.apache.flink.api.common.ExecutionConfig.setRestartStrategy
- 29. Kartesisches Produkt implementieren, so dass Iterationen übersprungen werden können.
- 30. Apache Flink DataSet API: Wie füge ich ein Flink DataSet mit sich selbst zu einem neuen zusammen?
Technisch Flink keine Wiederholungszähler zu jedem Tupel zuweisen. Stattdessen wird jede Iteration ausgeführt und dann gewartet, bis alle Elemente für diese Iteration verarbeitet wurden. Erst dann wird die nächste Iteration gestartet. –
Meine Antwort wurde aktualisiert. Der Downvote ist ziemlich hart ... :) –