MapReduce je model programiranja pogodan za pretragu velikih skupova podataka.[1][2]
MapReduce program se sastoji od procedure mapiranja (engl. map) koja obavlja filtriranje i sortiranje (na primer sortiranje studenata po imenu) i procedure redukovanja (engl. reduce) 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.
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 Apači Hadupa. Pojam MapReduce prvobitno se odnosio samo na Guglovu tehnologiju, ali je kasnije poprimio generalno značenje.
Reference
- ^ http://www.cnet.com/news/google-spotlights-data-center-inner-workings/
- ^ http://static.googleusercontent.com/media/research.google.com/es/us/archive/mapreduce-osdi04.pdf
- ^ "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
- ^ Lämmel, R. (2008). "Google's Map Reduceprogramming model — Revisited". Science of Computer Programming 70: 1. doi:10.1016/j.scico.2007.07.001
- ^ "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...
- ^ Ullman, J. D. (2012). "Designing good MapReduce algorithms". XRDS: Crossroads, the ACM Magazine for Students (Association for Computing Machinery)