Frage

Ich habe auf der Suche bei MapReduce für eine Weile, und es scheint ein sehr guter Weg, um zu implementieren, fault-tolerant distributed computing.Ich lese viele Beiträge und Artikel zu diesem Thema, Hadoop installiert, auf eine Reihe von virtuellen Maschinen, und hat einige sehr interessante tests.Ich glaube wirklich, ich verstehe die Karte und Reduzieren Schritte.

Aber hier ist mein problem : Ich kann nicht herausfinden, wie es kann helfen, mit http-server-logs-Analyse.

Mein Verständnis ist, dass große Unternehmen (Facebook zum Beispiel) verwenden MapReduce für die Zwecke der Berechnung des http-Protokolle, um Geschwindigkeit bis die Prozess der extrahieren der Zuschauer-Statistiken aus diesen.Die Firma für die ich arbeite, während die kleiner als Facebook, hat ein großes Volumen von web-logs zu berechnen Alltag (100Go wächst zwischen 5 und 10 Prozent pro Monat).Jetzt verarbeiten wir diese Protokolle auf einem einzelnen server, und es funktioniert gut.Aber die Verteilung der Rechenaufgaben sofort in den Sinn kommen als eine bald-zu-sein-nützlich-Optimierung.

Hier sind die Fragen, die ich nicht beantworten kann jetzt jede Hilfe würde sehr geschätzt werden :

  • Kann das MapReduce-Konzept wirklich angewendet werden, um weblogs Analyse ?
  • Ist MapReduce-die clevere Art, es zu tun ?
  • Wie würden Sie teilen das web-log-Dateien, die zwischen den verschiedenen computing-Instanzen ?

Danke.
Nicolas

War es hilfreich?

Lösung

Kann das MapReduce-Konzept wirklich angewendet werden, um weblogs Analyse ?

Ja.

Sie können teilen Sie Ihre hudge logfile in Blöcken sagen von 10.000 oder 1.000.000 Zeilen (was immer ein gutes Stück für Ihre Art von logfile - für apache-Logdateien, ich würde gehen für eine größere Anzahl), füttern Sie Sie, um einige Mapper, die extrahiert etwas bestimmtes (wie Browser,IP-Adresse, ..., Benutzername, ...) aus jeder log-Zeile, dann reduzieren Sie durch zählen der Anzahl der Zeiten, die jeder erschienen (vereinfacht):

  192.168.1.1,FireFox x.x,username1
  192.168.1.1,FireFox x.x,username1
  192.168.1.2,FireFox y.y,username1
  192.168.1.7,IE 7.0,username1

Sie können extrahieren Browser, ignorieren version, mit einer Karte Betrieb diese Liste:

FireFox
FireFox
FireFox
IE

Dann reduzieren um dies zu erhalten :FireFox 3 IE,1

Ist MapReduce-die clevere Art, es zu tun ?

Es ist clever, aber Sie müssten sehr groß sein, um sich einen Vorteil...Splitting PETABYTE von Protokollen.

Zu tun diese Art der Sache, ich würde es vorziehen, zu verwenden, Message-Queues und eine konsistente storage engine (wie eine Datenbank), mit der Verarbeitung von clients, ziehen Sie arbeiten aus den Warteschlangen, den Auftrag auszuführen, und drücken Sie Ergebnisse, um eine andere Warteschlange, mit jobs, die nicht ausgeführt werden können, in gewisser Zeitrahmen zur Verfügung gestellt für andere zu verarbeiten.Diese Kunden würden kleine Programme, die etwas bestimmtes.

Sie könnte starten mit 1 client, und zu erweitern, um 1000...Du könntest sogar einen client, der läuft wie ein Bildschirmschoner, der auf allen PCs in einem LAN, und führen Sie 8-clients auf Ihrem 8-Kern-Server, 2 dual-core-PCs...

Mit Zug:Sie hätten 100 oder 10-clients arbeiten, multicore-Rechner können mehrere clients ausgeführt wird, und was auch immer ein client-Ausführungen erhältlich wäre für den nächsten Schritt.Und Sie brauchen nicht zu tun, jede Vermischung oder Zuweisung für die Arbeit getan werden.Es ist 100% dynamisch.

http://img355.imageshack.us/img355/7355/mqlogs.png

Wie würden Sie teilen das web-log-Dateien, die zwischen den verschiedenen computing-Instanzen ?

Von der Anzahl der Elemente oder Zeilen, wenn es eine text-basierte logfile.

Um zu testen, MapReduce, ich würde gerne vorschlagen, dass Sie spielen mit Hadoop.

Andere Tipps

  • Kann das MapReduce-Konzept wirklich angewendet werden, um weblogs Analyse ?

Sicher.Welche Art von Daten Sie speichern?

  • Ist MapReduce-die clevere Art, es zu tun ?

Es würde Ihnen erlauben, Abfragen über viele Rohstoff-Maschinen auf einmal, also kann es ja nützlich sein.Alternativ könnten Sie versuchen Splitter.

  • Wie würden Sie teilen das web-log-Dateien, die zwischen den verschiedenen computing-Instanzen ?

In der Regel würden Sie vertreiben Ihre Daten mit einer konsistente hashing-Algorithmus, so können Sie ganz einfach weitere Instanzen hinzufügen später.Sollten Sie hash von was wäre Ihre primäre Schlüssel in eine normale Datenbank.Es könnte eine user-id, ip-Adresse, referer, Seite, Anzeige;was ist das Thema Ihrer Anmeldung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top