hadoop
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