Hadoop i okolice
-
Upload
zygm0nt -
Category
Technology
-
view
3.228 -
download
0
description
Transcript of Hadoop i okolice
![Page 2: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/4.jpg)
Co to jest Hadoop?
I Google i GFSI Nutch i LuceneI własna chmuraI Map-Reduce
![Page 5: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/5.jpg)
Map-Reduce
definicja:map: (K1,V1) list(K2,V2)reduce: (K2,list(V2)) list(K3,V3)
![Page 6: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/6.jpg)
Map-Reduce
definicja:map: (K1,V1) list(K2,V2)reduce: (K2,list(V2)) list(K3,V3)
![Page 7: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/11.jpg)
Przykład
![Page 12: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/12.jpg)
Architektura
![Page 13: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/13.jpg)
Architektura
![Page 14: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/24.jpg)
Czy ktoś tego używa?
Pewnie!I TwitterI FacebookI China MobileI inni... http://wiki.apache.org/hadoop/PoweredBy
![Page 25: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/26.jpg)
...
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/27.jpg)
...
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/28.jpg)
Przykład
![Page 29: Hadoop i okolice](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052623/559b80901a28ab0e768b4723/html5/thumbnails/31.jpg)
Dziękuję za uwagę.