2015-07-29 7 views
8

Ich bin gespannt, ob es absolut notwendig ist, dass eine Spark-Streaming-Anwendung ordnungsgemäß heruntergefahren wird oder dass das Risiko besteht, doppelte Daten über das Write-Ahead-Protokoll zu verursachen. Im folgenden Szenario skizziere ich die Reihenfolge der Schritte, bei denen ein Warteschlangenempfänger mit einer Warteschlange interagiert, erfordert Bestätigungen für Nachrichten.Ist es möglich, einen zuverlässigen Empfänger zu implementieren, der ein nicht graziöses Herunterfahren unterstützt?

  1. Der Spark-Queue-Empfänger zieht einen Stapel Nachrichten aus der Warteschlange.
  2. Der Spark Queue-Empfänger speichert den Nachrichtenstapel im Write-Ahead-Protokoll.
  3. Spark-Anwendung wird beendet, bevor eine Bestätigung an die Warteschlange gesendet wird.
  4. Spark-Anwendung startet erneut.
  5. Die Nachrichten im Write-Ahead-Protokoll werden über die Streaming-Anwendung verarbeitet.
  6. Der Spark-Queue-Empfänger ruft einen Stapel von Nachrichten aus der Warteschlange ab, die bereits in Schritt 1 angezeigt wurden, da sie nicht als empfangen bestätigt wurden.
  7. ...

Ist mein Verständnis richtig auf, wie benutzerdefinierter Empfänger sollte die Probleme des Doppels implementiert wird, die mit ihm zu kommen, und es ist normal, dass ein ordnungsgemäßes Herunterfahren zu verlangen?

Antwort

2

Fazit: Es hängt von Ihrer Ausgabeoperation ab. Die Verwendung der Direct API-Methode introduced on V1.3 beseitigt Inkonsistenzen zwischen Spark Streaming und Kafka. Daher wird jeder Datensatz von Spark Streaming effektiv genau einmal empfangen, obwohl Fehler von Spark Streaming innerhalb seiner Prüfpunkte verfolgt werden.

Um eine genau einmalige Semantik für die Ausgabe Ihrer Ergebnisse zu erreichen, muss Ihre Ausgabeoperation, die die Daten in einem externen Datenspeicher speichert, entweder idempotent sein oder eine atomare Transaktion, die Ergebnisse und Offsets speichert.

Weitere Informationen zur Direct API und deren Verwendung finden Sie unter this blog post von Databricks.

Verwandte Themen