hadoop

Post on 27-May-2015

1.052 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Valdas Vaivarassban.com

Distributed computing su Hadoop

Problema Nr. 1

Didelės apimties informaciją.Nuskaitymas ir įrašymas į kietąjį diską

daug lėtesnis negu duomenų apdorojimo sparta.

Sprendimas

Vietoj vieno HDD naudoti 100, 1000…

1 HDD – 75Mb/s 1000 HDD – 75Gb/s

Procesas prie duomenų, o ne duomenys prie proceso.

Problema Nr. 2

Reikia parašyti ne tik pačia aplikaciją, bet ir duomenų paskirstymo aplikaciją.

Taigi, reikia būti dviejų sričių specialstu.

Kas yra Hadoop?

Hadoop yra atviro-kodo Google MapReduce implementacija, kurią sukūrė Apache.

Naudojant Hadoop, high-level programuotojui nereikia gilitnis į paskirstymo sistemą (distributed computing) .

Šiuo metu Hadoop naudoja daugybė stambių įmonių, tarp kurių tokios kaip: Facebook, Amazon,Yahoo, IBM, veoh...

Naudojama:

Logų procesingas

Interneto crawlinimas ir indeksavimas

Data warehousingas

Pagrindiniai algoritmai:

Entity-Reduce

Sort

Join

Inverted Index

Hadoop failų sistema (HDFS)

Slave Node

Slave Node

Slave Node

Slave Node

Slave Node

Client

HDFS

Slave Node

Master Node

MapReduce

MapReduce programa apdoroja duomenis esančius HDFS.

MapReduce užduotį atlieka per du etapus Map ir Reduce.

Kiekviename etape naudojama rakto ir reikšmės (key-value) įvestis ir įšvestis.

MAPmap (in_key, in_value) ->

(out_key, intermediate_value) list

Pavyzdys: Explode Mapper

let map (k, v) =

foreach char c in v:

emit (c, 1)

(“A”, “bar”) (“b”,1), (“a”,1), (“r”,1)

(“B”, “camp”) (“c”,1), (“a”,1),

(“m”,1), (“p”,1)

REDUCEreduce (out_key, intermediate_value list) ->

out_value list

Pavyzdys : Sum Reducer

let reduce(k, vals) =sum = 0foreach int v in vals:

sum += vemit(k, sum)

(“a” [1,1]) (“a”, 2) (“m”, [1]) (“m”, 1)(“b”, [1]) (“b”, 1) (“p”, [1]) (“p”, 1)(“c”, [1]) (“c”, 1) (“r”, [1]) (“r”, 1)

DEMO

top related