330 likes | 568 Views
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 )
E N D
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) • Egy kijelölt csomópontnak adjuk ki („JobTracker”) • Ütemezés (scheduling) • „task”-okra szétválasztás; pl bemeneti (k,v) párok blokkja • task-ok csomóponthoz rendelése • Szükség lehet várakozási sorra is! • „stragglers” spekulatív végrehajtás • map és reduce is a leglassabb task-tól függ • Kulcselolszlásmiatt reduce esetén nem mindenképp megoldás
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
MapReduce: a keretrendszer feladatai [1] • Adat és kód kolokáció • „kódot visszük az adathoz” • Taszk indításnál: helyi „rack” „távoli” • Szinkronizáció • Map és Reduce között • „shuffle and sort” (nagy, elosztott GROUP BY key) • Hibakezelés!
Partícionálás és Kombinálás • Legegszerűbb part.: hash(kulcs) mod #reducer • f: kulcs reducer • Kombinálás: lokális aggregálás • „mini-reducer” • Word count? • Hálózati kommunikáció redukálása • Általánosságban nem „csereszabatos” a reducer-rel
R és funkcionális programozás • Az R-ben ez is van. • Ismerkedjünk meg: • lapply, sapply, tapply, apply, mapply, Reduce, {plyr csomag}, … • ‚foreach’ csomag (doParallel/doMC/doSNOWbackend)
R és Hadoop? • Miért? • R reuse: nyelv és létező megvalósítások • Vizualizáció!!! • R: létező funkcionális programozási támogatás • Megvalósítások? • RHadoop (github: RevolutionAnalytics/RHadoop), RHIPE, segue, HadoopStreaming, rHadoopClient, … • Kulcs: Streaming API • stdin/stdout: „tetszőleges” futtatható állomány befűzhető map vagy reduce taszknak
Wordcount - Java (Persze ez így nem teljesen fair…) Olvasni: [5]
Wordcount - R rmr.options(backend = "local")!
(R)Hadoop-ot • rmr2 local backend [6] • Kész VM használata [7] • http://vcl.inf.mit.bme.hu !
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:
Egy megoldás [8] repr. kezdeti halmaza while változik dofor adott sorrendben do klaszter-indexe ifthen { } return R: kmeans; példa
k-means rmr2/blob/master/pkg/tests/kmeans.R dist.fun= function(C, P){ apply(C, 1, function(x) colSums((t(P) - x)^2))}
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))}
k-means: map • Kulcs: P ponthoz legközelebbi klaszter-centrum • C „normál” R objektum • scoping miatt elérhető a map-ben • P: HDFS-ből • Érték: P • Ha még nincsenek klaszter-centrumok: mintavétel visszahelyezéssel • Vektorizáltkeyval ismét • in.memory.combine, combine: nem a mapreduce függvényé!
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))))}
k-means: reduce • Azonos kulcshoz (középpont) tartozó vektorok átlaga • Azaz: • Map: a legközelebbi klaszterbe sorol (középpont) • 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
kmeans.mr: törzs (1) • Iterációk C felüldefiniálásával • Minden menetben mapreduce-szal új középpontok
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ő,
Regressziós módszerek • Alapelv: Véletlen változó Hiba Közelítés Jósolt esemény Megfigyelhető változók • Átlagos hiba (mean error) Becsült érték Mért érték
Lineáris regresszió • Egyszerű lin. függvény illesztése az adatokra • nem vár alapvető változást a rendszer viselkedésében • Legkisebb négyzetek módszere • keressük azokat az a,b paramétereket, amelyekre • cél: minimális (Sum of Squared Errors) minimalizálása
Levezetés (parc. deriválás) Xi, Yi a mért értékpárok (pl. idő, terhelés)
Lineáris regresszió • Legjobban illeszkedő egyenes • , ahol • DE:Anscombe’squartet • Minőségilegkülönbözőadatok • Azonos regressziósegyenes
Lineáris regresszió: általános alak • Solve: • :„design matrix” - tanító-minták a sorok • : „targetlabels”
„Summationform” • és • … és ezek a szummák már párhuzamosíthatóak m-ben.
„Summationform”-ban felírható problémák [9] • LocallyWeightedLinearRegression • NaiveBayes • Gaussian DiscriminativeAnalysis • k-means • Logisticregression • Neuralnetwork • PrincipalComponentAnalysis • Independent ComponentAnalysis • ExpectationMaximization • SupportVectorMachine
„Summationform” • Gradienseket és (stat. modellre nézve) elégséges statisztikákat számító algoritmusok
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. "Informatikaialgoritmusok." ELTE EötvösKiadó, 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.