Dariusz Żbik
DLACZEGO? Przetwarzanie dużych zbiorów danych Przykład wyszukiwanie w zbiorze 100TB 1 węzeł @ 40MB/s -> 30 dni MTBF ~ 3 lata 1000 węzłów @ 40MB/s -> 44 minuty MTBF ~ 1 dzień Potrzebny framework do obliczeń wydajny niezawodny łatwy w użyciu
JAK? klaster zbudowany z PC rozproszony system plików rozproszony framework obliczeniowy (MapReduce) narzędzia OpenSource
KTO I PO CO? wyszukiwanie (distributed grep) sortowanie konstruowanie indeksów kategoryzacja dokumentów agregacja statystyka Kto używa? SoftwareMind Google Yahoo
MapReduce CECHY Zapewnia: skalowalność niezawodność Wymaga: zapisanie obliczenia jako ciąg operacji: map() reduce()
MapReduce TEORETYCZNIE map: (k,v) -> list(k', v') wewnętrzna operacja grupowania/sortowania reduce: (k',list(v')) -> list(k', v')
MapReduce TEORETYCZNIE (2) czytanie wejścia input reader operacja Map podział na kawałki partitioner sortowanie i grupowanie operacja Reduce zapis wyników
MapReduce TEORETYCZNIE (3)
STATYSTYKA SŁÓW map: reduce: input: linia tekstu operacja: podział na wyrazy output: wyraz, liczba wystąpień input: wyraz, lista liczby wystąpień operacja: sumowanie output: wyraz, całkowita liczba wystąpień
OBIEKTY K,V serializacja/deserializacja relacja porządkująca (dla kluczy) W praktyce wypełnienie interfejsów: org.apache.hadoop.io.writable write(dataoutputstream) readfields(datainputstream) org.apache.hadoop.io.writablecomparable write()/readfields() compareto() z interfejsu java.land.comparable
ANALIZA KOSZTKA - PROBLEM daneźródłowe: wykonane operacje kasowe cel: znalezienie produktów powiązanych problem: skala
KOSZTYK SQLem create table items (item_id serial, prod_id int, transaction_id int); -- insert into items(product_id, transaction_id) values(...); select i1.prod_id, i2.prod_id, count(distinct(i1.transaction_id)) from items as i1 join items as i2 on i1.transaction_id = i2.transaction_id and i1.prod_id > i2.prod_id group by i1.prod_id, i2.prod_id;
KOSZYK Hadoop operacja pomocnicza pobranie danych z bazy select * from items group by transaction_id zapis w dogodnej postaci: (k)klucz: transaction_id (v)wartość: lista identyfikatorów produktów podział na osobne pliki
KOSZYK Hadoop MAP input k: transaction_id v: list(prod_id) output k': (prod_id,prod_id) v': int // 1 po ludzku: wejście rachunek operacja wyszukanie par na rachunku wyjście para, liczebność (=1)
KOSZYK Hadoop MAP public class BasketMap extends MapReduceBase implements Mapper { ProductsPair pair = new ProductsPair(); LongWritable one = new LongWritable(1); public void map(writablecomparable key, Writable values, OutputCollector output, Reporter reporter) throws IOException { Integer[] items = ((BillItems)values).getProducts(); } } for (int i=0; i<items.length; i++) { for (int j=i+1; j<items.length; j++) { if ( items[i].intvalue() < items[j].intvalue() ) { pair.setproducts(items[i], items[j]); output.collect(pair, one); } } }
KOSZYK Hadoop Reduce input k': (prod_id,prod_id) v': lista(long) output k': (prod_id,prod_id) v': long //całkowita l.w. po ludzku: wejście para, lista(liczb wystąpień) operacja podsumowanie wyjście para, całkowita liczebność Implementacja: org.apache.hadoop.mapred.lib.longsumreducer
PRZERWA NA REKLAMĘ
DFS Distributed File System dane są przechowywane na wielu węzłach (Distributed) dane dostępne z wielu węzłów niezawodność (fault tolerant)
HDFS UPROSZCZENIA plik jest jednokrotnego zapisu brak możliwości dopisywania do pliku brak możliwości modyfikowania pliku brak operacji seek() podczas zapisu zapis jest wykonywany przez jeden proces optymalizacja dla dużych plików nieefektywność w przypadku dużej liczby małych plików
DZIĘKUJĘ ZA UWAGĘ http://lucene.apache.org/hadoop MapReduce Tools for Eclipse PigLatin http://wiki.apache.org/incubator/pigproposal http://research.yahoo.com/project/pig Hbase
SOFTWARE MIND
RYNKI, NA KTÓRYCH DZIAŁAMY Nasze biura: Kraków Warszawa Londyn Sophia-Antipolis Lwowie
Jesteśmy zespołem dynamicznych i kreatywnych osób, który tworzy innowacyjne, najwyższej jakości rozwiązania informatyczne wspierające Twój biznes
SOFTWARE MIND Dynamiczny Software House, aktywnie działający na globalnych rynkach Profesjonalny partner dostarczający wysokiej jakości produkty i usługi IT Pracujący z Klientami według najlepszych międzynarodowych standardów jakości (CMMI level 2/3)
SOFTWARE MIND Istniejemy na rynku od roku 1999 Zatrudniamy ponad 90 osób 120 100 80 60 40 20 0 8 15 25 70 80 110 2002 2003 2004 2005 2006 2007 (prognoza) 60 % naszych przychodów pochodzi z rynków międzynarodowych Western Europie USA Poland
Jesteśmy ekspertami z zakresu IT Business Solutions & Services Zawsze poszukujemy efektywnych i innowacyjnych rozwiązań
Specjalizujemy się w rozwiązaniach Customer Management Twój Klient jest w centrum naszej uwagi
Chcemy być dla Ciebie Partnerem z wyboru, dlatego zaangażowaniem, innowacyjnością, jakością, bliskością współpracy codziennie pracujemy na Twoje zaufanie
Jesteśmy wierni naszym wartościom Są nimi: Ludzie, Jakość, Innowacja, Transparentność
NASI KLIENCI O NAS Mogę zagwarantować, że nawet z moim światowej klasy zespołem Egg ds. rozwoju wydałbym dwa razy więcej pieniędzy, zaangażowałbym dwa razy więcej ludzi i wciąż byłbym w połowie drogi do miejsca, w którym znajdujemy się obecnie. Dzisiaj kładziemy solidne fundamenty, na których w ciągu najbliższych kilku miesięcy zbudujemy naprawdę imponującą platformę internetową nowej generacji, zaś na tej platformie Garlik stworzy wyjątkowy biznes Tom Ilube, CEO Garlik, former CIO Eggbank "Chciałbym wyrazić swoje podziękowania i gratulacje za wspaniałą pracę nad [...] projektem. Ostatnia wersja jest już gotowa, wcześniej, niż wynikałoby to z harmonogramu, przy koszcie poniżej budżetu i braku jakichkolwiek zaległości. Był to prawdziwy wysiłek zespołu, wszyscy uczestniczyli w identyfikowaniu oraz uzgadnianiu różnych kwestii. Jeszcze raz dziękuję za Wasz profesjonalizm i wspaniałą pracę David Taylor, Project Manager, GTech Corp.
FIRMY, Kliknij, aby KTÓRE edytować SPRAWDZIŁY styl wzorca NASZĄ tytułu DOBRĄ JAKOŚĆ Kliknij, aby edytować style wzorca tekstu Drugi poziom
SIEDZIBA GŁÓWNA ul. Bociana 22 A 31-231 Kraków Polska tel: + 48 12 252 34 00 fax: + 48 12 252 34 01 www.softwaremind.pl office@softwaremind.pl ODDZIAŁY: Polska /Warszawa Francja /Nicea Wielka Brytania /Londyn Ukraina/ Lwów Oferta firmy Software Mind