hadoop i okolice

31
Hadoop i okolice ...czyli Google w laptopie Marcin Cylke [email protected] 22 lutego 2011

Upload: zygm0nt

Post on 07-Jul-2015

3.225 views

Category:

Technology


0 download

DESCRIPTION

These are the slides from my presentation on Warsaw JUG meeting (22.02.2011).

TRANSCRIPT

Page 1: Hadoop i okolice

Hadoop i okolice...czyli Google w laptopie

Marcin [email protected]

22 lutego 2011

Page 2: Hadoop i okolice

O czym dziś będzie?

Co to jest Hadoop?

Użytkowanie Hadoopa

Hadoop i okolice

Do czego się to nadaje

Przykład

Podsumowanie

Page 3: Hadoop i okolice

Zbyt dużo danych

I Facebook 2TB/dzieńI CERN: 40TB/dzień

(15PB/rok)I gdzie to składować?I brakuje miejscaI brakuje sprzętu na takie

ilości danychI skalowania wszerz

Page 4: Hadoop i okolice

Co to jest Hadoop?

I Google i GFSI Nutch i LuceneI własna chmuraI Map-Reduce

Page 5: Hadoop i okolice

Map-Reduce

definicja:map: (K1,V1) list(K2,V2)reduce: (K2,list(V2)) list(K3,V3)

Page 6: Hadoop i okolice

Map-Reduce

definicja:map: (K1,V1) list(K2,V2)reduce: (K2,list(V2)) list(K3,V3)

Page 7: Hadoop i okolice

Map-Reduce - liczenie słów

(doc1, ”Treść dokumentu 1...”)(doc2, ”Treść dokumentu 2...”)(doc3, ”Treść dokumentu 3...”)(...)(doc4, ”Treść dokumentu 4...”)

Page 8: Hadoop i okolice

Map-Reduce - liczenie słów

(doc1, ”Treść dokumentu 1...”)(doc2, ”Treść dokumentu 2...”)(doc3, ”Treść dokumentu 3...”)(...)(doc4, ”Treść dokumentu 4...”)

Page 9: Hadoop i okolice

Map-Reduce - liczenie słów

(doc1, ”Treść dokumentu 1...”)(doc2, ”Treść dokumentu 2...”)(doc3, ”Treść dokumentu 3...”)(...)(doc4, ”Treść dokumentu 4...”)

(samochód, 5), (krowa, 3), (tak, 20)(orka, 1), (krowa, 5), (teatr, 10)(jemioła, 5), (orka, 4), (piernik, 3)(...)

Page 10: Hadoop i okolice

Map-Reduce - liczenie słów

(doc1, ”Treść dokumentu 1...”)(doc2, ”Treść dokumentu 2...”)(doc3, ”Treść dokumentu 3...”)(...)(doc4, ”Treść dokumentu 4...”)

(samochód, 5), (krowa, 3), (tak, 20)(orka, 1), (krowa, 5), (teatr, 10)(jemioła, 5), (orka, 4), (piernik, 3)(...)

(krowa, 3) + (krowa, 5)→ (krowa, 8)

(orka, 1) + (orka, 4)→ (orka, 5)

Page 11: Hadoop i okolice

Przykład

Page 12: Hadoop i okolice

Architektura

Page 13: Hadoop i okolice

Architektura

Page 14: Hadoop i okolice

HDFS

I rozproszony system plikówI replikacja fragmentów (konfigurowalna)I funkcjonalność koszaI pozwala na usuwanie węzłów w trakcie działaniaI brak zabezpieczeń - jedynie system uprawnień POSIX

1 $ hadoop f s − l s /2 $ hadoop f s −cat / output . f i l e . 13 $ hadoop f s −mkdir / output . d i r4 $ hadoop f s −copyFromLocal ˜mcl/ hadoop i npu t da t a \5 / output . d i r /

Page 15: Hadoop i okolice

Java API

1 p u b l i c c l a s s WordcountJob extends Con f i gu r ed implements Tool {2 p r i v a t e f i n a l s t a t i c I n tW r i t a b l e one = new I n tW r i t a b l e ( 1 ) ;34 p u b l i c v o i d map( LongWr i tab l e key , Text va lue ,5 Outpu tCo l l e c t o r<Text , I n tWr i t a b l e> output ,6 Repo r t e r r e p o r t e r ) throws IOExcept i on {7 S t r i n g l i n e = va l u e . t o S t r i n g ( ) ;8 S t r i n gTok e n i z e r t o k e n i z e r = new S t r i n gTok e n i z e r ( l i n e ) ;910 w h i l e ( t o k e n i z e r . hasMoreTokens ( ) ) {11 Text word = new Text ( t o k e n i z e r . nextToken ( ) . toLowerCase ( ) ;12 output . c o l l e c t ( word , one ) ;13 }1415 }16 . . . .

Page 16: Hadoop i okolice

Java API cd

1 p u b l i c s t a t i c c l a s s Reduce extends MapReduceBase2 implements Reducer<Text , I n tWr i t a b l e , Text , I n tWr i t a b l e> {3 p u b l i c v o i d r educe ( Text key , I t e r a t o r<I n tWr i t a b l e> va l u e s ,4 Outpu tCo l l e c t o r<Text , I n tWr i t a b l e> output ,5 Repo r t e r r e p o r t e r ) throws IOExcept i on {6 i n t accumu la to r = 0 ;7 w h i l e ( v a l u e s . hasNext ( ) )8 accumu la to r += va l u e s . nex t ( ) . ge t ( ) ;9 output . c o l l e c t ( key , new I n tW r i t a b l e ( accumu la to r ) ) ;10 }11 }12 . . . .

Page 17: Hadoop i okolice

Java API cd

1 p u b l i c i n t run ( S t r i n g [ ] a r g s ) throws Excep t i on {2 Con f i g u r a t i o n con f = getConf ( ) ;3 JobConf j ob = new JobConf ( conf , MapJob . c l a s s ) ;4 Path i n = new Path ( a r g s [ 0 ] ) ;5 Path out = new Path ( a r g s [ 1 ] ) ;6 F i l e I n pu tFo rma t . s e t I n pu tPa t h s ( job , i n ) ;7 F i l eOutputFormat . setOutputPath ( job , out ) ;8 j ob . setJobName ( ”MyJob” ) ;9 j ob . s e tMappe rC la s s ( MapClass . c l a s s ) ;10 job . s e tR edu c e rC l a s s ( Reduce . c l a s s ) ;11 job . s e t I npu tFo rmat ( Text InputFormat . c l a s s ) ;1213 job . setOutputFormat ( TextOutputFormat . c l a s s ) ;14 job . s e tOutputKeyC la s s ( Text . c l a s s ) ;15 job . s e tOu tpu tVa l u eC l a s s ( I n tW r i t a b l e . c l a s s ) ;16 J obC l i e n t . runJob ( j ob ) ;17 r e t u r n 0 ;18 }1920 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) throws Excep t i on {21 i n t r e s = ToolRunner . run (new Con f i g u r a t i o n ( ) , new MapJob ( ) , a r g s ) ;22 System . e x i t ( r e s ) ;23 }24 }

Page 18: Hadoop i okolice

Integracja innych języków

I nie tylko JavaI Hadoop streaming

1 $ hadoop j a r2 mapred/ c o n t r i b / s t r e am ing /hadoop−0.21.0− s t r e am ing . j a r3 − i n pu t i n pu t / c i t e 7 5 9 9 . t x t −output output−s t r e am ing4 −mapper ’ cut −f 2 −d , ’ −r e du c e r ’ uniq ’5

6 $ hadoop j a r7 mapred/ c o n t r i b / s t r e am ing /hadoop−0.21.0− s t r e am ing . j a r8 − f i l e s AvgByAttrMapper . py , AvgByAttrReducer . py9 − i n pu t i n pu t / apat63 99 . t x t −output output−python−avg10 −mapper ’ AvgByAttrMapper . py ’11 −r e du c e r ’ AvgByAttrReducer . py ’

Page 19: Hadoop i okolice

Przyległości Hadoopa

To głównie projekty poboczne.Dzięki nim Hadoop jest znaczniewygodniejszy w użyciu.

I PigI HiveI HbaseI Zookeeper, Mahout, ...

Page 20: Hadoop i okolice

Pig

I język wyższego poziomu do opisu jobów MapReduce data flowprogramming

I oferuje użytkownikowi zdefiniowane funkcje (count, sum), alepozwala na własne rozszerzenia

I dane wejściowe mogą pochodzić skąd się chce - możnanapisać odpowiednie funkcje ładujące

I trochę podobny do SQLa (Pig Latin)

Page 21: Hadoop i okolice

1 l o g = LOAD ’ hd f s : // l o c a l h o s t :9000/ i npu t /ex−sma l l . l o g ’2 AS ( use r , time , que ry ) ;3 grpd = group l o g by u s e r ;4 cntd = f o r e a c h grpd GENERATE group , COUNT( l o g ) ;5 STORE cntd INTO ’ hd f s : // l o c a l h o s t :9000/ i npu t / output ’ ;

Page 22: Hadoop i okolice

Hive

I pakiet data warehousing nadbudowany na HadoopI zaimplementowane przez ludzi z Facebook’aI HiveQL pozwala swobodniej operować danymiI Ułatwia łączenie danych (outer i inner joiny)I od 2009 roku 29% pracowników FB używa Hive, tylko połowa

z nich to inżynierowie

Page 23: Hadoop i okolice

1 h ive> CREATE TABLE c i t e ( c i t i n g INT , c i t e d INT) ROW2 FORMAT DELIMITED FIELDS TERMINATED BY ’ , ’ STORED3 AS TEXTFILE ;4 h ive> LOAD DATA LOCAL INPATH ’ c i t e 7 5 9 9 . t x t ’ OVERWRITE5 INTO TABLE c i t e ;6 h ive> SELECT COUNT(1 ) FROM c i t e ;

Page 24: Hadoop i okolice

Czy ktoś tego używa?

Pewnie!I TwitterI FacebookI China MobileI inni... http://wiki.apache.org/hadoop/PoweredBy

Page 25: Hadoop i okolice

Używa tego

I Zliczanie:I ile tweetów, ile requestów, jak dużo logowań, częstotliwość

wysyłki SMSów, itpI Powiązania:

I specyfika użytkowników mobilnych, grafy połączeńużytkowników, zmiany ilości tweetów w czasie, co robiąpopularni użytkownicy

I Eksperymenty:I co mówią tweety użytkowników, i ich przyjaciół, analiza grafów

połączeń

Page 26: Hadoop i okolice

...

I podsumowania - dzienne /tygodniowe agregacje kliknięć,analiza

I zaangażowania użytkownikówI data miningI wykrywanie spamuI optymalizacja reklamI i pewnie tona innych

Page 27: Hadoop i okolice

...

I 500m użytkowników w ChinachI zbieranie danych Call Data Record (5TB/dzień)

I analiza rekordów, billingI tunning sieciI marketing

I działają na 256 węzłowym klastrze HadoopaI zaobserwowali wzrost wydajności rzędu 12-16 razy - w

porównaniu do komercyjnych narzędzi ETL

Page 28: Hadoop i okolice

Przykład

Page 29: Hadoop i okolice

Podsumowanie

I łatwo zbuduj własny klaster obliczeniowyI dodatkowe języki ułatwiają programowanieI poważni użytkownicy - więc i poważne wsparcieI MapReduce nie jest łatweI nie zawsze jest sens go używaćI potrzebna masa krytyczna, żeby znaleźć dla niego

zastosowanie

Page 30: Hadoop i okolice

Zasoby

I http://hadoop.apache.org/

I http://www.umiacs.umd.edu/~jimmylin/MapReduce-book-final.pdf

I http://wiki.apache.org/pig/PigTutorial

I http://wiki.apache.org/hadoop/Hive/Tutorial

I http://mcl.jogger.pl

Page 31: Hadoop i okolice

Dziękuję za uwagę.