Ich möchte ein System erstellen, in dem ich Protokolle in Echtzeit lesen und apache spark verwenden kann, um es zu verarbeiten. Ich bin verwirrt, wenn ich etwas wie Kafka oder Gerinne verwenden sollte, um die Logs zum Funkenstrom zu leiten, oder sollte ich die Logs mit Sockeln passieren. Ich habe ein Beispielprogramm in der Spark-Streaming-Dokumentation Beispiel für einen Spark-Stream durchgelesen. Aber ich werde dankbar sein, wenn mir jemand einen besseren Weg geben kann, Logs an Sparkstream weiterzuleiten. Es ist eine Art neuer Rasen für mich.
Apache Flume kann helfen, die Protokolle in Echtzeit zu lesen. Flume stellt die Sammlung und den Transport von Protokollen für die Anwendung bereit, in der Spark Streaming für die Analyse der erforderlichen Informationen verwendet wird.
1. Laden Sie Apache Flume von der offiziellen Website herunter oder folgen Sie den Anweisungen von hier
2. Flume einrichten und ausführen Ändern Sie "rume-conf.properties.template" aus dem Verzeichnis, in dem "Flume" installiert ist ("FLUME_INSTALLATION_PATH \ conf"). Hier müssen Sie die Protokolle "Quelle", "Kanal" und "Senken" (Ausgabe) angeben. Weitere Details zum Setup hier
Es gibt ein Beispiel für das Starten von "run", das Protokollinformationen von Ping-Befehlen sammelt, die auf dem Windows-Host ausgeführt werden, und diese in eine Datei schreibt:
flume-conf.properties
%Vor%Um das Beispiel auszuführen, gehen Sie zu FLUME_INSTALLATION_PATH und führen Sie
aus %Vor%ODER Sie können Ihre Java-Anwendung mit Ablaufbibliotheken in einem Klassenpfad erstellen und die Instanz org.apache.blume.node.Application von der Anwendung aufrufen, indem Sie entsprechende Argumente übergeben.
Wie richte ich Flume ein, um Holz zu sammeln und zu transportieren?
Sie können ein Skript zum Sammeln von Protokollen vom angegebenen Speicherort verwenden
%Vor%anstelle von Windows-Skript können Sie auch Java-Anwendung (setzen Sie 'Java-Pfad_zu_Hauptklasse-Argumente' im Feld), die Smart-Logs Sammlung bietet. Wenn die Datei beispielsweise in Echtzeit geändert wird, können Sie Tailer von Apache Commons IO. Um den Kanal zum Transport der Log-Informationen zu konfigurieren, lesen Sie diesen Artikel
3. Holen Sie sich den Flume-Stream aus Ihrem Quellcode und analysieren Sie ihn mit Spark. Sehen Sie sich ein Codebeispiel von github Ссылка
Sie können Apache Kafka als Warteschlangensystem für Ihre Protokolle verwenden. Das System, das Ihre Protokolle erstellt hat, z. B. websever, sendet Protokolle an Apache KAFKA. Dann können Sie apache storm oder spark streaming library verwenden, um von KAFKA Themen- und Prozessprotokollen in Echtzeit zu lesen.
Sie müssen einen Protokollstrom erstellen, den Sie mit Apache Kakfa erstellen können. Für Kafka gibt es eine Integration mit Sturm- und Apachenfunken. Beide haben ihre Vor- und Nachteile.
Für Storm Kafka Integration schau hier nach
Für Apache Spark Kafka Integration werfen Sie einen Blick hier
Obwohl dies eine alte Frage ist, einen Link von Databricks veröffentlichen, die einen großen Schritt für Schritt Artikel für die Protokollanalyse mit Spark in vielen Bereichen enthält.
Hoffe, das hilft.
Tags und Links apache-spark apache-kafka spark-streaming flume