Was ist der Unterschied zwischen Mini-Batch vs Echtzeit-Streaming in der Praxis (nicht Theorie)? Theoretisch verstehe ich Mini-Batch ist etwas, das in dem gegebenen Zeitrahmen, während Echtzeit-Streaming ist eher wie etwas tun, wie die Daten ankommt, aber meine größte Frage ist, warum nicht Mini-Batch mit Epsilon Zeitrahmen (sagen wir eine Millisekunde) oder ich möchte den Grund verstehen, warum man eine effektive Lösung als andere wäre?Was ist der Unterschied zwischen Mini-Batch und Echtzeit-Streaming in der Praxis (nicht Theorie)?
Ich bin kürzlich auf ein Beispiel gestoßen, wo Mini-Batch (Apache Spark) für Betrugserkennung und Echtzeit-Streaming (Apache Flink) für die Betrugsprävention verwendet wird. Jemand sagte auch, dass das Sagen von Mini-Batches keine effektive Lösung für die Betrugsprävention wäre (da das Ziel darin besteht, die Transaktion so zu verhindern, wie sie passierte). Nun frage ich mich, warum dies mit Mini-Batch (Spark) nicht so effektiv wäre? Warum ist es nicht effektiv, Minibatch mit einer Latenz von 1 Millisekunde auszuführen? Batching ist eine Technik, die überall verwendet wird, einschließlich des Betriebssystems und des Kernel-TCP/IP-Stacks, wo die Daten auf der Festplatte oder im Netzwerk tatsächlich gepuffert sind. Was ist der überzeugende Faktor, um einen effektiver zu machen?
Vielen Dank für die Antwort, also wie Apache Flink tut besser als sagen, eine verteilte Batch-Job in diesem Fall jede Millisekunde planen? funktioniert Apache Flink überhaupt? – user1870400
Flink terminiert einen Streaming-Job nur einmal und leitet die Datensätze kontinuierlich durch seine Operatoren. Flink bündelt Datensätze, um Daten über das Netzwerk zu senden, um die Netzwerkeffizienz zu verbessern. Dies funktioniert, indem Datensätze in einen Puffer (Standard 32 KB) und Versand dieser Puffer, sobald es voll ist. Es gibt auch eine Zeitüberschreitung, um den Puffer zu senden, falls der Strom nicht "schnell" genug ist. Diese Technik begrenzt die maximale Latenz. –
Wenn zB 32Kb nicht erreicht wird (sagen Sie, es gibt nicht genug Anzahl von Nachrichten) Was ist Timeout-Zeit? und ist es konfigurierbar?Ich nehme an, dass ein Scheduler, der Jobs plant, kluge Entscheidungen darüber treffen kann, wo er planen muss, um Parallelität und Durchsatz auf mehreren Maschinen zu erhöhen. Wenn Apache Flink nur einmal plant, frage ich mich, wie er die Last auf die Maschinen verteilt, entweder zur Laufzeit des Jobs? – user1870400