HADOOP Dariusz Żbik -...
Transcript of HADOOP Dariusz Żbik -...
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
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
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
JAK?
• klaster zbudowany z PC
• rozproszony system plików
• rozproszony framework obliczeniowy (MapReduce)
• narzędzia OpenSource
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
KTO I PO CO?
� wyszukiwanie (distributed grep)
� sortowanie
� konstruowanie indeksów
� kategoryzacja dokumentów
� agregacja statystyka
Kto używa?
� SoftwareMind
� Yahoo
HADOOP Copyright 2007 © Software Mind Sp. z o. o.
MapReduce – CECHY
Zapewnia:
• skalowalność
• niezawodność
Wymaga:
• zapisanie obliczenia jako ciąg operacji:
� map()
� reduce()
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
MapReduce – TEORETYCZNIE
� map: (k,v) -> list(k', v')
� wewnętrzna operacja grupowania/sortowania
� reduce: (k',list(v')) -> list(k', v')
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
MapReduce – TEORETYCZNIE (2)
� czytanie wejścia – input reader
� operacja Map
� podział na kawałki – partitioner
� sortowanie i grupowanie
� operacja Reduce
� zapis wyników
HADOOP Copyright 2007 © Software Mind Sp. z o. o.
STATYSTYKA SŁÓW
map:
� input: linia tekstu
� operacja: podział na wyrazy
� output: wyraz, liczba wystąpień
reduce:
� input: wyraz, lista liczby wystąpień
� operacja: sumowanie
� output: wyraz, całkowita liczba wystąpień
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
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
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
ANALIZA KOSZTKA - PROBLEM
� dane źródłowe: wykonane operacje kasowe
� cel: znalezienie produktów powiązanych
� problem: skala
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
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;
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
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
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
KOSZYK – Hadoop – MAP
po ludzku:
� wejście – rachunek
� operacja – wyszukanie par na rachunku
� wyjście – para, liczebność (=1)
output
� k': (prod_id,prod_id)
� v': int // 1
input
� k: transaction_id
� v: list(prod_id)
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
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);
}
}
}
}
}
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
KOSZYK – Hadoop – Reduce
po ludzku:
� wejście – para, lista(liczb wystąpień)
� operacja – podsumowanie
� wyjście – para, całkowita liczebność
Implementacja:org.apache.hadoop.mapred.lib.LongSumReducer
output
k': (prod_id,prod_id)
v': long //całkowita l.w.
input
k': (prod_id,prod_id)
v': lista(long)
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
DFS – Distributed File System
• dane są przechowywane na wielu węzłach (Distributed)
• dane dostępne z wielu węzłów
• niezawodność (fault tolerant)
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
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
HADOOP Copyright 2007 © Software Mind Sp. z o. o.
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
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
RYNKI, NA KTÓRYCH DZIAŁAMY
Nasze biura:
� Kraków
� Warszawa
� Londyn
� Sophia-Antipolis
� Lwowie
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
Jesteśmy zespołem dynamicznych i kreatywnych osób, który tworzy innowacyjne, najwyższej jakościrozwiązania informatyczne wspierające Twój biznes
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
� Dynamiczny Software House,aktywnie działający na globalnych rynkach
� Profesjonalny partnerdostarczają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
HADOOP Copyright 2007 © Software Mind Sp. z o. o.
815
25
7080
110
0
20
40
60
80
100
120
2002 2003 2004 2005 2006 2007
(prognoza)
• Istniejemy na rynku od roku 1999
• Zatrudniamy ponad 90 osób
� 60 % naszych przychodów
pochodzi z rynków międzynarodowych
SOFTWARE MIND
Western Europie USA
Poland
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
Jesteśmy ekspertami z zakresu IT Business Solutions & Services
Zawsze poszukujemy efektywnych i innowacyjnych rozwiązań
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
Specjalizujemy się w rozwiązaniach Customer Management
Twój Klient jest w centrum naszej uwagi
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
Chcemy być dla Ciebie Partnerem z wyboru, dlatego zaangażowaniem, innowacyjnością, jakością, bliskościąwspółpracy codziennie pracujemy na Twoje zaufanie
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
Jesteśmy wierni naszym wartościom
Są nimi: Ludzie, Jakość, Innowacja, Transparentność
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
“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
NASI KLIENCI O NAS
"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.
Kliknij, aby edytować styl wzorca tytułu
Kliknij, aby edytować style wzorca tekstu
Drugi poziom
Copyright 2007 © Software Mind Sp. z o. o. HADOOP
FIRMY, KTÓRE SPRAWDZIŁY NASZĄ DOBRĄ JAKOŚĆ
Copyright 2007 © Software Mind Sp. z o. o. Oferta firmy Software Mind Copyright 2007 © Software Mind Sp. z o. o. HADOOP
SIEDZIBA GŁÓWNAul. Bociana 22 A
31-231 Kraków
Polska
tel: + 48 12 252 34 00
fax: + 48 12 252 34 01
ODDZIAŁY:
Polska /Warszawa
Francja /Nicea
Wielka Brytania /Londyn
Ukraina/ Lwów