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
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.
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 ?
- 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.
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