ich über spark
und seinen real-time stream
processing.I verwirrt lese füttern sind, dass selbst Warum dann liest Strom von der Quelle wie twitter oder Datei, Wenn spark
kann wir Benötigen Sie kafka
, um Daten an spark
zu senden? Es wäre toll, wenn mir jemand erklärt, welchen Vorteil wir haben, wenn wir spark
mit kafka
verwenden. Vielen Dank.Warum müssen wir kafka Daten zu Apache Funken
Antwort
Kafka bietet eine Entkopplung und Pufferung Ihres Eingabestroms.
Nehmen Sie Twitter-Daten zum Beispiel, afaik verbinden Sie mit der Twitter-API und erhalten Sie einen konstanten Strom von Tweets, die Kriterien, die Sie angegeben haben. Wenn Sie jetzt Ihre Spark-Jobs für eine Stunde herunterfahren, um etwas auf Ihren Servern zu tun oder eine neue Version ausrollen, werden Sie Tweets von dieser Stunde an verpassen.
Nun stellen Sie sich vor, Sie setzen Kafka vor Ihre Spark-Jobs und haben einen sehr einfachen Ingest-Thread, der nichts anderes als eine Verbindung zur API herstellt und Tweets an Kafka schreibt, wo die Spark-Jobs sie abrufen. Da Kafka alles auf Disc speichert, können Sie Ihre Verarbeitungsjobs herunterfahren, Wartungsarbeiten durchführen und wenn sie neu gestartet werden, werden sie alle Daten von dem Zeitpunkt abholen, als sie offline waren.
Wenn Sie Ihre Verarbeitungsjobs in signifikanter Weise ändern und Daten der letzten Woche erneut verarbeiten möchten, können Sie dies leicht tun, wenn Sie Kafka in Ihrer Kette haben (sofern Sie Ihre Aufbewahrungszeit hoch genug gesetzt haben) Wechsle einfach deine neuen Jobs aus und ändere die Offsets in Kafka so, dass deine Jobs alte Daten erneut lesen und wenn das erledigt ist, ist dein Data Store mit deinem neuen Bearbeitungsmodell auf dem neuesten Stand.
Es gibt eine good article auf das allgemeine Prinzip geschrieben von Jay Kreps, einer der Menschen hinter Kafka, geben Sie das, wenn Sie mehr wissen wollen.
Vielen Dank für Ihre Antwort. Es ergibt Sinn für mich. Ich habe nur noch eine Frage bezüglich der Erstellung von Daten aus der letzten Woche, wie Sie gesagt haben. Was, wenn wir die Daten auch in HDFS speichern. In diesem Fall besteht kafka darin, Daten nur dann zu speichern, wenn das System heruntergefahren ist, oder? Ich diskutiere eigentlich im Sinne der Lambda-Architektur. In serving layer können wir Daten von hadoop verwenden und kafka wird die neuen Daten halten. Ist es richtig? Vielen Dank. –
können Sie Spark-Streaming mit der HDFS-Eingabe verwenden und neue Dateien aus einem angegebenen Verzeichnis verarbeiten. Es ist jedoch viel schwieriger, die Neuverarbeitung ab einem bestimmten Zeitpunkt zu steuern - Sie müssten mit dem Verschieben von Dateien zwischen HDFS-Verzeichnissen herumhantieren .... Mit Kafka können Sie angeben, von welcher Position (Offset) Sie können Beginnen Sie mit der Verarbeitung Ihrer Daten. Auch wenn Ihr Spark-Job lange läuft - die Verwaltung von Dateien kann zu einem Problem werden - werden Sie wahrscheinlich nicht Millionen von Dateien im selben HDFS-Dir-Verzeichnis haben, nehme ich an. Sie müssen einen Prozess entwerfen, um alte Dateien oder Ähnliches zu löschen/verschieben. – Marina
Hängt davon ab, wie Sie die Daten in HDFS ablegen, Sie können in ein Staging-Verzeichnis schreiben und von dort regelmäßig einen Oozie-Job ausführen, um die Daten in eine partitionierte Hive-Tabelle einzufügen, so würde Hive sich um Ihre zugrunde liegende Dateiorganisation kümmern Sie haben eine einfache Möglichkeit, Daten im Stapel zu verarbeiten (vorausgesetzt, sie haben einen Zeitstempel, den ich annehmen kann) und sogar alte Daten zu löschen. Es gibt wirklich keinen richtigen oder falschen Weg hier, es hängt alles stark davon ab, was genau deine Anforderungen sind :) –
Kafka entkoppelt alles, Consumer-Producer müssen nicht voneinander wissen. Kafka bietet Pub-Sub-Modell basierend auf Thema.
Aus mehreren Quellen können Sie Daten (Nachrichten) zu jedem Thema in Kafka schreiben, und Consumer (Spark oder irgendetwas) kann Daten basierend auf Thema konsumieren.
Mehrere Verbraucher können Daten aus dem gleichen Thema wie Kafka Daten für einen Zeitraum speichern.
Aber am Ende hängt es von Ihrem Anwendungsfall ab, ob Sie wirklich einen Broker brauchen.
- 1. Kafka Consumer Vs Apache Flink
- 2. mit Kafka Direkt Streaming Funken
- 3. Warum müssen wir vor() warten()?
- 4. Mapping Kafka Partition zu einem bestimmten Funken Executor
- 5. Apache Kafka Consumer - Analytics Platform - Daten visualisieren
- 6. Inter Application Kommunikation in Apache Funken Streaming
- 7. Parsing Daten von Kafka in Apache Fink
- 8. Generieren Sie Daten mit Apache Kafka und erhalten Sie mit Funken Streaming
- 9. Warum Apache Kafka in Echtzeit-Verarbeitung
- 10. Funken-Stream-Differenzier Kafka Themen
- 11. Apache Kafka: Produzent produziert nicht alle Daten
- 12. Kafka Funken Streaming dynamisches Schema
- 13. Apache Kafka mehrere Gruppen
- 14. Apache Kafka - Consumer Fundamentals
- 15. Warum müssen wir gespeicherte Prozedur verwenden?
- 16. Warum müssen wir Lua's collectgarbage() zweimal anrufen?
- 17. Warum müssen wir im Frühling Anmerkungen verwenden?
- 18. warum müssen wir localrc-datei für openstack
- 19. Warum müssen wir Objective-C-Objektfeld beibehalten?
- 20. Apache Kafka Mehrere Verbraucherinstanzen
- 21. Warum müssen wir OPENQUERY verwenden, um Daten von Sybase zu SQL Server zu ziehen?
- 22. Warum müssen wir UpdateWindow nach ShowWindow aufrufen?
- 23. Warum müssen wir die init-Methode angeben?
- 24. Beacon: Warum müssen wir Tx power
- 25. Warum/wann müssen wir super.ViewDidLoad aufrufen?
- 26. Warum müssen wir eval JSON Klammern hinzufügen?
- 27. Warum müssen wir Platz vor% c setzen?
- 28. 'wo' in Apache Funken
- 29. Apache Funken agg() Funktion
- 30. kafka NoClassDefFoundError kafka/Kafka
Sie brauchen * es * nicht - sie dienen verschiedenen Zwecken. Kafka präsentiert eine einheitliche Quelle zum Konsumieren ist alles. –