r és mapreduce

33
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek R és MapReduce „Big Data” elemzési módszerek Kocsis Imre ikocsis @ mit.bme.hu 2013.10.09.

Upload: kylia

Post on 19-Jan-2016

80 views

Category:

Documents


0 download

DESCRIPTION

R és MapReduce. „Big Data” elemzési módszerek Kocsis Imre ikocsis @ mit.bme.hu 2013.10.09. MapReduce : a teljes kép. Forrás: [1], p 30. MapReduce : a keretrendszer feladatai [1]. „ What ” és „ how ” szétválasztása Job: „kód” Mapper, reducer , ( partitioner , combiner ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: R és  MapReduce

Budapesti Műszaki és Gazdaságtudományi EgyetemMéréstechnika és Információs Rendszerek Tanszék

R és MapReduce

„Big Data” elemzési módszerek

Kocsis [email protected]

2013.10.09.

Page 2: R és  MapReduce

MapReduce: a teljes kép

Forrás: [1], p 30

Page 3: R és  MapReduce

MapReduce: a keretrendszer feladatai [1] „What” és „how” szétválasztása Job: „kód”

o Mapper, reducer, (partitioner, combiner)o Egy kijelölt csomópontnak adjuk ki („JobTracker”)

Ütemezés (scheduling)o „task”-okra szétválasztás; pl bemeneti (k,v) párok blokkjao task-ok csomóponthoz rendeléseo Szükség lehet várakozási sorra is!o „stragglers” spekulatív végrehajtás

• map és reduce is a leglassabb task-tól függ• Kulcselolszlás miatt reduce esetén nem mindenképp megoldás

Page 4: R és  MapReduce

Kitérő: Zipf eloszlás Zipf törvénye: természetes nyelvi szövegben (a

legtöbb nyelvre, elég nagy korpuszra, …) bármely szó gyakorisága inverz arányos a frekvenciatáblában vett helyezésével (ranking).

„A leggyakoribb háromszor olyan gyakori, mint a harmadik”

k: helyezés, s: paraméter (klasszikusan 1), N: elemek száma

Page 5: R és  MapReduce

MapReduce: a keretrendszer feladatai [1] Adat és kód kolokáció

o „kódot visszük az adathoz”o Taszk indításnál: helyi „rack” „távoli”

SzinkronizációoMap és Reduce közötto „shuffle and sort” (nagy, elosztott GROUP BY key)

Hibakezelés!

Page 6: R és  MapReduce

Partícionálás és Kombinálás Legegszerűbb part.: hash(kulcs) mod #reducer

o f: kulcs reducer

Kombinálás: lokális aggregáláso „mini-reducer”oWord count?o Hálózati kommunikáció redukálásao Általánosságban nem „csereszabatos” a reducer-rel

Page 7: R és  MapReduce

R és funkcionális programozás Az R-ben ez is van.

Ismerkedjünk meg:o lapply, sapply, tapply, apply, mapply, Reduce, {plyr

csomag}, …

‚foreach’ csomag (doParallel/doMC/doSNOW backend)

Page 8: R és  MapReduce

foreach

Page 9: R és  MapReduce

RHADOOP

Page 10: R és  MapReduce

R és Hadoop? Miért?

o R reuse: nyelv és létező megvalósítások• Vizualizáció!!!

o R: létező funkcionális programozási támogatás

Megvalósítások?o RHadoop (github: RevolutionAnalytics/RHadoop), RHIPE,

segue, HadoopStreaming, rHadoopClient, …

Kulcs: Streaming APIo stdin/stdout: „tetszőleges” futtatható állomány

befűzhető map vagy reduce taszknak

Page 11: R és  MapReduce

Wordcount - Java

(Persze ez így nem teljesen fair…)

Olvasni: [5]

Page 12: R és  MapReduce

Wordcount - R

rmr.options(backend = "local")!

Page 13: R és  MapReduce

rmr2 local backend [6] Kész VM használata [7]

o http://vcl.inf.mit.bme.hu !

(R)Hadoop-ot

Page 14: R és  MapReduce

k-means [6] Adatpontok: vektortér Klaszter reprezentációja: súlyponttal /

”középponttal” (vektor-átlag) : i-edik klaszter reprezentánsa Minimalizálandó a négyzetes távolságösszeg, mint

hiba:

Page 15: R és  MapReduce

Egy megoldás [8] repr. kezdeti halmazawhile változik

do for adott sorrendbendo klaszter-indexe

if then {

}return R: kmeans; példa

Page 16: R és  MapReduce

k-meansrmr2/blob/master/pkg/tests/kmeans.R

dist.fun = function(C, P){ apply(C,

1, function(x)

colSums((t(P) - x)^2))}

Page 17: R és  MapReduce

k-means: map kmeans.map = function(., P) { nearest = { if(is.null(C)) sample(1:num.clusters,nrow(P),

replace = T) else { D = dist.fun(C, P) nearest = max.col(-D)}}

if(!(combine || in.memory.combine)) keyval(nearest, P) else keyval(nearest, cbind(1, P))}

Page 18: R és  MapReduce

k-means: map Kulcs: P ponthoz legközelebbi klaszter-centrum

o C „normál” R objektum o scoping miatt elérhető a map-beno P: HDFS-ből

Érték: P

Ha még nincsenek klaszter-centrumok: mintavétel visszahelyezéssel

Vektorizált keyval ismét

in.memory.combine, combine: nem a mapreduce függvényé!

Page 19: R és  MapReduce

k-means: reduce kmeans.reduce = { if (!(combine||in.memory.combine)) function(., P) t(as.matrix(apply(P, 2, mean))) else function(k, P) keyval( k, t(as.matrix(apply(P, 2, sum))))}

Page 20: R és  MapReduce

k-means: reduce Azonos kulcshoz (középpont) tartozó vektorok átlaga

Azaz:o Map: a legközelebbi klaszterbe sorol (középpont)o Reduce: kialakult új középpontok

Szemlétesen: a középpontokat „tologatjuk”

Beragadhat lokális minimumba! (aut. Megállásnál)

Algoritmust lásd (aut. megállással): [8], p 1422

Page 21: R és  MapReduce

kmeans.mr: törzs (1)

Page 22: R és  MapReduce

kmeans.mr: törzs (1) Iterációk C felüldefiniálásával

Minden menetben mapreduce-szal új középpontok

Page 23: R és  MapReduce

kmeans-törzs (2)

Page 24: R és  MapReduce

Regresszióf függvény,• bemenet:

az attribútumok értéke,• kimenet: megfigyelések

legjobb közelítése• „ökölszabály”• Példa:

testtömeg/magasság együttes eloszlás valójában egyenesreilleszthető,

Page 25: R és  MapReduce

Regressziós módszerek Alapelv:

t tY f Véletlen változó Közelítés Hiba

1 2( , ,..., )nY f X X XJósolt esemény

Megfigyelhető változók

1

n

t tt

Y FME

n

•Átlagos hiba (mean error)

Mért érték

Becsült érték

Page 26: R és  MapReduce

Lineáris regresszió Egyszerű lin. függvény illesztése az adatokra

o nem vár alapvető változást a rendszer viselkedésében

Legkisebb négyzetek módszereo keressük azokat az a,b paramétereket, amelyekre

cél:

2

2

1 1

n n

t t tt t

SSE Y F

minimális (Sum of Squared Errors)

Y a bX

2

2

1 1

n n

t t t tt t

Y F Y a bX

minimalizálása

Page 27: R és  MapReduce

2

1

1

1

2

1

1

1 1 1 1 1 1 1

2 0

0

1 1 1

n

t t nt

t tt

n

t tt

n

t t nt

t t tt

n n n n n n

t t t t t t t t t t tt t t t t t t

d Y a bXY a bX

da

na Y bX

a Y bX

d Y a bXX Y a bX

db

X Y Y bX bX X Y X Y b X Xn n n

2

1

1 1 12

2

1 1

0n n

tt

n n n

t t t tt t t

n n

t tt t

b X

n X Y X Y

b

n X X

Levezetés (parc. deriválás)

Xi, Yi a mért értékpárok (pl. idő, terhelés)

Page 28: R és  MapReduce

Lineáris regresszió Legjobban illeszkedő egyenes , ahol DE:

Anscombe’squartetoMinőségileg

különbözőadatok

o Azonos regressziósegyenes

Page 29: R és  MapReduce

Lineáris regresszió: általános alak

Solve:

:„design matrix” - tanító-minták a sorok : „target labels”

Page 30: R és  MapReduce

„Summation form”

és

… és ezek a szummák már párhuzamosíthatóak m-ben.

Page 31: R és  MapReduce

„Summation form”-ban felírható problémák [9]

Locally Weighted Linear Regression Naive Bayes Gaussian Discriminative Analysis k-means Logistic regression Neural network Principal Component Analysis Independent Component Analysis Expectation Maximization Support Vector Machine

Page 32: R és  MapReduce

„Summation form” Gradienseket és (stat. modellre nézve) elégséges

statisztikákat számító algoritmusok

Page 33: R és  MapReduce

Hivatkozások [1] Lin, J., & Dyer, C. (2010). Data-Intensive Text Processing with MapReduce.

Synthesis Lectures on Human Language Technologies, 3(1), 1–177. doi:10.2200/S00274ED1V01Y201006HLT007

[2] http://www.slideshare.net/jeffreybreen/big-data-stepbystep-using-r-hadoop-with-rhadoops-rmr-package

[3] http://www.cloudera.com/content/support/en/downloads.html [4] http://hortonworks.com/products/hortonworks-sandbox/ [5] http://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html [6]

http://home.mit.bme.hu/~ikocsis/notes/2013/10/23/(r)hadoop-sandbox-howto/ [7]

http://home.mit.bme.hu/~ikocsis/notes/2013/10/28/rhadoop-sandbox-with-the-cloudera-quickstart-vm/

[8] Iványi, A. "Informatikai algoritmusok." ELTE Eötvös Kiadó, Budapest (2004). [9] Chu, C. T., Kim, S. K., Lin, Y. A., Yu, Y., Bradski, G. R., Ng, A. Y., & Olukotun, K.

(2006). Map-reduce for machine learning on multicore. In B. Schölkopf, J. Platt, & T. Hofmann (Eds.), Advances in Neural Information Processing Systems 19: Proceedings of the 2006 Conference (pp. 281–288). MIT Press.