PLNOG#10 Hadoop w akcji: analiza logów 1
Hadoop w akcji: analiza logów rkadiusz Osiński arkadiusz.osinski@allegro.pl PLNOG#10 Hadoop w akcji: analiza logów 2
genda 1. Hadoop 2. HDFS 3. YRN 4. Map & Reduce 5. Hive 6. Hadoop Streaming PLNOG#10 Hadoop w akcji: analiza logów 3
Czym Hadoop jest? - Rozproszony system przetwarzania informacji - Połączenie systemu plików oraz frameworka do wykonywania zadań PLNOG#10 Hadoop w akcji: analiza logów 4
HDFS - Hadoop Distributed File System - Możliwe uzyskanie środowiska H PLNOG#10 Hadoop w akcji: analiza logów 5
HDFS - Hadoop Distributed File System - Możliwe uzyskanie środowiska H - Rack wareness - Łatwe skalowanie + Commodity hardware PLNOG#10 Hadoop w akcji: analiza logów 6
HDFS - Hadoop Distributed File System - Możliwe uzyskanie środowiska H - Rack wareness - Łatwe skalowanie + Commodity hardware - Nie wymaga RID - Replikacja zasobów PLNOG#10 Hadoop w akcji: analiza logów 7
HDFS - Hadoop Distributed File System - Możliwe uzyskanie środowiska H - Rack wareness - Łatwe skalowanie + Commodity hardware - Nie wymaga RID - Replikacja zasobów - Kontrola dostępu do zasobów - Łatwy dostęp: CLI, HTTP, FUSE PLNOG#10 Hadoop w akcji: analiza logów 8
H HDFS Name Node Name Node ZooKeeper Journal Node Data Node PLNOG#10 Hadoop w akcji: analiza logów 9
HDFS B Rack 1 Replikacja: 3 Rack 2 PLNOG#10 Hadoop w akcji: analiza logów 10
HDFS B Rack 1 Replikacja: 3 Rack 2 PLNOG#10 Hadoop w akcji: analiza logów 11
HDFS B Rack 1 Replikacja: 3 Rack 2 PLNOG#10 Hadoop w akcji: analiza logów 12
HDFS B Rack 1 Replikacja: 3 Rack 2 PLNOG#10 Hadoop w akcji: analiza logów 13
HDFS B B Rack 1 Replikacja: 3 Rack 2 PLNOG#10 Hadoop w akcji: analiza logów 14
HDFS B B Rack 1 Replikacja: 3 B Rack 2 PLNOG#10 Hadoop w akcji: analiza logów 15
HDFS B B B Rack 1 Replikacja: 3 B Rack 2 PLNOG#10 Hadoop w akcji: analiza logów 16
YRN - Yet nother Resource Negotiator - Framework do zarządzania zasobami PLNOG#10 Hadoop w akcji: analiza logów 17
YRN - Yet nother Resource Negotiator - Framework do zarządzania zasobami - Umożliwia uruchamianie zadań MapReduce (lecz nie tylko) - Zadania uruchamiane z uprawnieniami właściciela PLNOG#10 Hadoop w akcji: analiza logów 18
YRN - Yet nother Resource Negotiator - Framework do zarządzania zasobami - Umożliwia uruchamianie zadań MapReduce (lecz nie tylko) - Zadania uruchamiane z uprawnieniami właściciela - Kolejki zadań + kontrola dostępu - Wydzielanie zasobów dla kolejek (RM) PLNOG#10 Hadoop w akcji: analiza logów 19
YRN - Yet nother Resource Negotiator - Framework do zarządzania zasobami - Umożliwia uruchamianie zadań MapReduce (lecz nie tylko) - Zadania uruchamiane z uprawnieniami właściciela - Kolejki zadań + kontrola dostępu - Wydzielanie zasobów dla kolejek (RM) - SPOF - ResourceManager - Wersja alpha PLNOG#10 Hadoop w akcji: analiza logów 20
Map PLNOG Polish Network Operators Group PLNOG Map Key->Value PLNOG -> 1 Polish -> 1 Network -> 1 Operators -> 1 Group -> 1 PLNOG ->1 PLNOG#10 Hadoop w akcji: analiza logów 21
Reduce Group -> 1 Reduce Network -> 1 Operators -> 1 PLNOG -> 1 PLNOG -> 1 Reduce Reduce Reduce Group -> 1 Network -> 1 Operators -> 1 PLNOG -> 2 Polish -> 1 Polish -> 1 Reduce PLNOG#10 Hadoop w akcji: analiza logów 22
Hive hive (logs)> desc apachelog; col_name data_type Vhost string, servername string, httpson string, xrealip string, Clientip string, userident string, incomingdate string, Incomingtime string, timezone string, executiontime int, outputsize int, Outputsizewheader int, outputcode int, method string, source_host string, url string, querystring string, Referer string, useragent string, v_date string v_hour string PLNOG#10 Hadoop w akcji: analiza logów 23
Hive hive (logs)> show partitions apachelog; (... ) v_date=2013-02-24/v_hour=22 v_date=2013-02-24/v_hour=23 v_date=2013-02-25/v_hour=00 v_date=2013-02-25/v_hour=01 v_date=2013-02-25/v_hour=02 v_date=2013-02-25/v_hour=03 v_date=2013-02-25/v_hour=04 (... ) PLNOG#10 Hadoop w akcji: analiza logów 24
PLNOG#10 Hadoop w akcji: analiza logów 25
Hive hive (logs)> select count(*) from apachelog where v_date= 2013-02-26 ; (... ) hive (logs)> select source_host, sum(executiontime)/count(*) as avg_time from apachelog where v_date= 2013-02-26 group by source_host; (... ) hive (logs)> select xrealip,url,query from apachelog where v_date= 2013-02-26 and outputcode >= 500; PLNOG#10 Hadoop w akcji: analiza logów 26
Perl + Geolokalizacja/ Map while(<>) { chomp($_); my @fields = split(/\ /,$_); my ($country_code, (..),$city, (..) ) = $gi->get_city_record($fields[3]); $country_code = "NN" unless $country_code; $city = "NN" unless $city; } print $fields[0]." ".$country_code." ".$city."\t"."1\n"; PLNOG#10 Hadoop w akcji: analiza logów 27
Perl + Geolokalizacja / Reduce while (<>) { my @line = split(/\t/,$_); if ( $key ne $line[0] ) { print $key." ".$counter."\n"; $counter=1; $key = $line[0]; } else { $counter++; }; } print $key." ".$counter."\n"; PLNOG#10 Hadoop w akcji: analiza logów 28
Perl + Geolokalizacja $ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -Dmapred.job.queue.name=q_projects -files./geo_ip_map.pl,./geo_ip_reduce.pl,./geolitecity.dat,./geopp.pm -mapper geo_ip_map.pl -reducer geo_ip_reduce.pl -input /lokalizacja/w/hdfs/logi -output /lokalizacja/w/hdfs/rezultat PLNOG#10 Hadoop w akcji: analiza logów 29
Perl + Geolokalizacja $ hdfs dfs ls /lokalizacja/w/hdfs/rezultat -rw-r--r-- 3 user group 0 /_SUCCESS -rw-r--r-- 3 user group 297134 /part-00000 $ hdfs dfs cat /lokalizacja/w/hdfs/rezultat/part-00000 (... ) Serwis.pl PL Poznan 4729 Serwis_kolejny.pl PL Torun 2652 Serwis_kolejny.pl PL Gdansk 373 (... ) PLNOG#10 Hadoop w akcji: analiza logów 30
Python import sys badwords = ['zakazane','slowa'] for line in sys.stdin: line = line.strip() for word in badwords: if word in line.lower(): print word+"\t"+line PLNOG#10 Hadoop w akcji: analiza logów 31
Python $ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -Dmapred.job.queue.name=q_projects -files./scan_map.py -mapper scan_map.py -input /lokalizacja/w/hdfs/logi -output /lokalizacja/w/hdfs/rezultat PLNOG#10 Hadoop w akcji: analiza logów 32
Dziękuję! Q & PLNOG#10 Hadoop w akcji: analiza logów 33