Ich habe eine Spark-Streaming-Anwendung, die Daten von Kafka über das Netzwerk liest. Es ist wichtig zu beachten, dass sich der Cluster und die Kafka-Server in verschiedenen Regionen befinden.Spark-Streaming von Kafka eine Aufgabe hinterherhinken verursacht die gesamte Charge zu verlangsamen
Die durchschnittliche Zeit für die Ausführung eines Jobs beträgt etwa 8-10 Minuten (ich arbeite in 10-Minuten-Intervallen). In bestimmten Chargen schießt die Job-Vollzeit jedoch in die Höhe. Die Menge, in der es aufspringt, ist im Allgemeinen zufällig (könnte 20 Minuten oder 50 Minuten oder eine Stunde sein). Beim Graben habe ich festgestellt, dass alle Aufgaben pünktlich abgeschlossen sind, mit Ausnahme einer, aufgrund derer die gesamte Bearbeitungszeit beeinträchtigt wird. Zum Beispiel ist hier die Aufgabe Zeitprotokoll von einem solchen Fall:
In diesem Fall Aufgabe 6 getroffen hat, 54 Minuten, während die anderen sehr schnell beendet haben, obwohl der Eingang Split gleich ist. Ich habe dies zu Netzwerkproblemen (langsam/verstopft) erklärt und bin der Meinung, dass ein Neustart dieser Aufgabe viel Zeit gespart haben könnte.
Ermöglicht Funke eine Kontrolle, durch die wir langsame Aufgaben auf einem anderen Knoten neu starten und dann die Ergebnisse für die Aufgabe verwenden können, die zuerst abgeschlossen wurde? Oder gibt es eine bessere Lösung für dieses Problem, die mir nicht bewusst ist?
Wenn Ihre App mehrere Jobs enthält, kann die Konfiguration hilfreich sein: spark.streaming.concurrentJobs – bistaumanga
@bistaumanga Mit mehreren Jobs meinen Sie? Es ist eine Streaming-Anwendung. Für jede Iteration werden ein paar Map-Reduzierungen ausgeführt. – Sohaib
Ich meine, mehrere Dinge in einer Anwendung zu tun, wie die Anzahl der Ereignisse zu zählen, nach einer Gruppe zu zählen, den Durchschnitt einiger Schlüssel zu berechnen ... mehrere Aktionen zu haben – bistaumanga