Amazon MapReduce Best Practices für die Log-Analyse

8

Ich analysiere Zugriffsprotokolle, die von Apache, Nginx, Darwin (Video-Streaming-Server) generiert wurden, und aggregiere Statistiken für jede gelieferte Datei nach Datum / Referrer / Useragent.

Jede Stunde werden Tonnen von Protokollen generiert, und diese Zahl wird wahrscheinlich in naher Zukunft dramatisch ansteigen. Die Verarbeitung dieser Art von Daten über Amazon Elastic MapReduce klingt also vernünftig.

Im Moment bin ich bereit, mit Mappern und Reducern meine Daten zu verarbeiten und den gesamten Prozess mit dem folgenden Ablauf zu testen:

  • hat Mapper, Reducer und Daten auf Amazon S3 hochgeladen
  • hat den passenden Job konfiguriert und erfolgreich verarbeitet
  • hat aggregierte Ergebnisse von Amazon S3 auf meinen Server heruntergeladen und sie in die MySQL-Datenbank eingefügt, indem Sie das CLI-Skript
  • ausgeführt haben

Ich habe das manuell nach Tausenden von Tutorials getan, die im Internet über Amazon ERM abrufbar sind.

Was soll ich als nächstes tun? Was ist der beste Ansatz, um diesen Prozess zu automatisieren?

Was sind gängige Praktiken für:

  • Verwenden Sie cron, um Amazon EMR jobTracker über die API zu steuern?
  • Wie kann ich sicherstellen, dass meine Protokolle nicht zweimal verarbeitet werden?
  • Soll ich die Bewegung / Entfernung der verarbeiteten / Ergebnisdateien durch mein eigenes Skript steuern?
  • Was ist der beste Ansatz, um Ergebnisse in PostgreSQL / MySQL einzufügen?
  • Soll ich für jeden Job verschiedene "Eingabe" / "Ausgabe" Verzeichnisse anlegen oder für alle Jobs dieselben Verzeichnisse verwenden?
  • Soll ich jedes Mal einen neuen Job über die API erstellen?
  • Was ist der beste Ansatz, um unformatierte Protokolle in Amazon S3 hochzuladen? Ich habe in Apache Flume nachgeschaut, aber ich bin mir nicht sicher, ob ich etwas brauche, solange ich es nicht wirklich brauche -Zeitprotokollverarbeitung.
  • Wie kontrollieren Sie, dass ein neuer Teil der Logs von Apache, nginx, auf Amazon hochgeladen werden kann? (protokolliert Rotation?)
  • Kann jemand sein Setup des Datenverarbeitungsflusses teilen?
  • Wie kontrollieren Sie das Hochladen von Dateien und die Fertigstellung von Aufträgen?

Sicher hängt in den meisten Fällen von Ihrer Infrastruktur und Anwendungsarchitektur ab.

Sicher Ich kann das alles mit meiner benutzerdefinierten Lösung implementieren und möglicherweise eine Menge Dinge, die bereits von anderen genutzt werden, wieder investieren.

Aber sollte eine Art gängige Praxis sein, mit der ich gerne vertraut werden würde.

Ich denke, dass dieses Thema für viele Leute nützlich sein kann, die versuchen, Zugriffsprotokolle mit Amazon Elastic MapReduce zu verarbeiten, konnte aber keine guten Materialien über Best Practices finden, um damit umzugehen.

UPD: Nur um hier zu klären, ist die einzige letzte Frage:

Was sind Best Practices für die Verarbeitung von Protokollen, die von Amazon Elastic MapReduce unterstützt werden?

Verwandte Beiträge:

Ein- und Auslesen von Daten aus Elastic MapReduce HDFS

    
webdevbyjoss 23.03.2012, 11:47
quelle

1 Antwort

3

Das ist eine sehr weit offene Frage, aber hier sind einige Gedanken, die Sie in Betracht ziehen könnten:

  • Verwenden von Amazon SQS: Dies ist eine verteilte Warteschlange und ist sehr nützlich für die Workflow-Verwaltung. Sie können einen Prozess in die Warteschlange schreiben, sobald ein Protokoll verfügbar ist, und ein anderer, der davon liest, das beschriebene Protokoll verarbeitet in der Warteschlangennachricht und löscht sie, wenn die Verarbeitung abgeschlossen ist. Dies würde sicherstellen, dass Protokolle nur einmal verarbeitet werden.
  • Apache Flume, wie Sie erwähnt haben, ist sehr nützlich für die Log-Aggregation. Das sollten Sie berücksichtigen, auch wenn Sie keine Echtzeit benötigen, da es Ihnen zumindest einen standardisierten Aggregationsprozess gibt.
  • Amazon hat vor kurzem SimpleWorkFlow veröffentlicht. Ich habe gerade angefangen, es zu untersuchen, aber das klingt vielversprechend, jeden Schritt Ihrer Datenpipeline zu verwalten.

Hoffe, das gibt dir ein paar Hinweise.

    
Charles Menguy 14.04.2012, 19:42
quelle