hadoop i okolice

Post on 07-Jul-2015

3.226 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Hadoop i okolice...czyli Google w laptopie

Marcin Cylkemarcin.cylke@gmail.com

22 lutego 2011

O czym dziś będzie?

Co to jest Hadoop?

Użytkowanie Hadoopa

Hadoop i okolice

Do czego się to nadaje

Przykład

Podsumowanie

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

Co to jest Hadoop?

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

Map-Reduce

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

Map-Reduce

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

Map-Reduce - liczenie słów

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

Map-Reduce - liczenie słów

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

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)(...)

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)

Przykład

Architektura

Architektura

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 /

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

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

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 }

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 ’

Przyległości Hadoopa

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

I PigI HiveI HbaseI Zookeeper, Mahout, ...

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)

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 ’ ;

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

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 ;

Czy ktoś tego używa?

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

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ń

...

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

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

...

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

Przykład

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

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

Dziękuję za uwagę.

top related