Jak MapReduce jest dobrą metodą analizy logów serwera http?

Patrzyłem na MapReduce od jakiegoś czasu i wydaje się, że jest to bardzo dobry sposób na implementację odpornych na błędy obliczeń rozproszonych. Przeczytałem wiele artykułów i artykułów na ten temat, zainstalowałem Hadoop na wielu maszynach wirtualnych i zrobiłem kilka bardzo ciekawych testów. Naprawdę myślę, że rozumiem mapę i zmniejszyć kroki.

Ale tu jest mój problem: Nie wiem, jak to może pomóc w analizie logów serwera http.

Rozumiem, że duże firmy (Na przykład Facebook) używać MapReduce w celu obliczenia swoich dzienników http w celu przyspieszenia procesu wydobywania z nich statystyk odbiorców. Firma, dla której pracuję, choć mniejsza niż Facebook, ma dużą ilość dzienników internetowych do obliczenia codziennie (100go rośnie między 5 a 10 procent każdego miesiąca). Teraz przetwarzamy te logi na jednym serwerze i działa to dobrze. Ale Dystrybucja zadań obliczeniowych natychmiast przychodzi na myśl jako przydatna optymalizacja.

Oto pytania, na które nie mogę teraz odpowiedzieć, każda pomoc byłaby bardzo mile widziana:

  • czy koncepcja MapReduce naprawdę może być zastosowana do analizy weblogów ?
  • Czy MapReduce jest najbardziej sprytnym sposobem na zrobienie tego ?
  • Jak podzieliłbyś pliki dziennika internetowego między różne instancje obliczeniowe ?

Dziękuję.
Nicolas

Author: Nicolas, 2009-06-02

2 answers

Czy koncepcja MapReduce może być rzeczywiście zastosowana do analizy weblogów ?

Tak.

Możesz podzielić swój logfile hudge na kawałki powiedzmy 10,000 lub 1,000,000 linii (cokolwiek jest dobre dla Twojego typu logfile-dla logfiles apache wybrałbym większą liczbę), przekazać je niektórym maperom, którzy wyodrębnią coś konkretnego (jak przeglądarka, adres IP,..., Username, ... ) z każdego wiersza dziennika, a następnie zmniejszyć przez zliczanie ilości razy, kiedy każdy z nich pojawił się "uproszczone": {]}

  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

Możesz wyodrębnić przeglądarki, ignorując wersję, używając operacji mapy, aby uzyskać tę listę:

FireFox
FireFox
FireFox
IE

Następnie zmniejszyć, aby uzyskać to : FireFox, 3 IE, 1

Czy MapReduce jest najbardziej sprytnym sposobem na zrobienie tego ?

To sprytne, ale musisz być bardzo duży, aby uzyskać jakąkolwiek korzyść... Dzielenie petabajtów dzienników.

Aby zrobić tego typu rzeczy, wolałbym użyć kolejek wiadomości i spójnego silnika pamięci (Jak baza danych), w przypadku klientów przetwarzających, które pobierają pracę z kolejek, wykonują zadanie i przesyłają wyniki do innej kolejki, przy czym zadania nie są wykonywane w określonym czasie i są dostępne dla innych do przetworzenia. Ci klienci to małe programy, które robią coś konkretnego.

Możesz zacząć od 1 Klienta i rozszerzyć do 1000... Możesz nawet mieć klienta, który działa jako wygaszacz ekranu na wszystkich komputerach w sieci LAN i uruchomić 8 klientów na serwerach 8-rdzeniowych, 2 na dwurdzeniowych komputerach...

With Pull: You może mieć 100 lub 10 klientów pracujących, maszyny wielordzeniowe mogą mieć wielu klientów uruchomionych, a cokolwiek klient skończy, będzie dostępne w następnym kroku. I nie musisz robić żadnego haszowania lub zadania, aby wykonać pracę. Jest w 100% dynamiczny.

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

Jak podzieliłbyś pliki dziennika internetowego między różne instancje obliczeniowe ?

Według liczby elementów lub linii, jeśli jest to tekst logfile.

W celu przetestowania MapReduce, chciałbym zasugerować, aby grać z Hadoop.

 16
Author: Osama Al-Maadeed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-02 13:21:02
  • czy koncepcja MapReduce naprawdę może być zastosowana do analizy weblogów ?
Jasne. Jakie dane przechowujesz?
  • Czy MapReduce jest najbardziej sprytnym sposobem na zrobienie tego ?

Pozwoli Ci to na odpytywanie wielu maszyn towarowych naraz, więc tak, może być przydatne. Alternatywnie, możesz spróbować Sharding .

  • Jak podzieliłbyś pliki dziennika internetowego między różne instancje obliczeniowe ?

Ogólnie można by rozpowszechniaj swoje dane za pomocą spójnego algorytmu haszującego , dzięki czemu możesz łatwo dodać więcej instancji później. Powinieneś hashować za pomocą dowolnego klucza podstawowego w zwykłej bazie danych. Może to być identyfikator użytkownika, adres ip, referer, strona, Reklama; niezależnie od tematu logowania.

 1
Author: Nick Retallack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-02 12:12:42