MapReduce

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу

MapReduce je model programiranja pogodan za pretragu velikih skupova podataka.[1][2]

MapReduce program se sastoji od Map() procedure koja obavlja filtriranje i sortiranje (na primer sortiranje studenata po imenu) i Reduce() procedure koje obavlja zbirnu operaciju (na primer brojanje koliko ima studenata sa svakim imenom). MapReduce sistem se izvršava uz pomoć prikupljanja sa distibuiranih servera, paralelnog izvršavanja operacija, upravljanja tokom i prenosom podataka između različitih delova sistema, na taj način obezbeđujući osobine redudanse i robusnosti (eng.- Robustness).

Model se zasniva na funkcijama mapiranja i redukovanja. One se najčešće koriste u funkcionalnom programiranju, ali je njihova svrha u okviru MapReduce drugačija.[3][4] Ključne prednosti MapReduce okvira su skalabilnost i robusnost. Dok sve prednosti MapReduce okvira mogu biti uočljive samo sa višenitnom implementacijom, jer jednonitna implementacija (na primer MongoDB) ne može biti brža od tradicionalnog (ne MapReduce) modela programiranja.[5] Upotreba ovog modela je opravdana samo ako su prisutne optimizovana distribuirana operacija Shuffle (koja smanjuje troškove mrežne komunikacije) i osobina robusnosti. Optimizacija troškova komunikacije je takođe od velikog značaja za dobar MapReduce algoritam.[6]

MapReduce biblioteke se pišu u različitim programskim jezicima, sa različitim nivoima optimizacije. Popularna implementacija otvorenog koda je deo Apache Hadoop-a. Pojam MapReduce prvobitno se odnosio samo na Google tehnologiju, ali je kasnije poprimio generalno značenje.

Reference[уреди]

  1. ^ http://www.cnet.com/news/google-spotlights-data-center-inner-workings/
  2. ^ http://static.googleusercontent.com/media/research.google.com/es/us/archive/mapreduce-osdi04.pdf
  3. ^ "Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages." -"MapReduce: Simplified Data Processing on Large Clusters", by Jeffrey Dean and Sanjay Ghemawat; from Google Research
  4. ^ Lämmel, R. (2008). "Google's Map Reduceprogramming model — Revisited". Science of Computer Programming 70: 1. doi:10.1016/j.scico.2007.07.001
  5. ^ "MongoDB: Terrible MapReduce Performance". Stack Overflow. October 16, 2010. The MapReduce implementation in MongoDB has little to do with map reduce apparently. Because for all I read, it is single-threaded, while map-reduce is meant to be used highly parallel on a cluster. ... MongoDB MapReduce is single threaded on a single server...
  6. ^ Ullman, J. D. (2012). "Designing good MapReduce algorithms". XRDS: Crossroads, the ACM Magazine for Students (Association for Computing Machinery)