MapReduce
Map-reduce (که آنرا تحت عنوان "نگاشت-کاهش" ترجمه کردهاند) یک مدل برنامه نویسی برای پردازش مجموعه داده های بزرگ است. در چارچوب نگاشتکاهش، کاربر، محاسبات را در قالب یک تابع نگاشت و یک تابع کاهش مینویسد و سیستم زماناجرای زیرین، بصورت خودکار محاسبات را در بین خوشههای بزرگی از ماشینها موازی میکند و خرابیهای ماشین را مدیریت میکند و ارتباطات بینماشینی را زمانبندی میکند تا استفاده از شبکه و دیسکها ساده تر و سودمندتر شود. بدین ترتیب برنامه نویس تنها بر روی نوشتن این دو تابع تمرکز کرده و موازی سازی محاسبات انبوه و بکار بردن سیستم و مدیریت خرابی ها برایش ساده میشود.
در هنگام انجام پردازش با MapReduce، بصورت خودکار، داده های ورودی به چندین بلوک شکسته می شوند که هر بلوک توسط یک تابع ()map پردازش می شود و سپس نتایج تمامی توابع map، به عنوان ورودی به تابع ()reduce ارجاع داده شده و توسط تابع ()reduce ترکیب می شوند.
MapReduce قلب هادوپ است. روش برنامه نویسی است که امکان مقیاس پذیری گسترده در سطح صدها یا هزاران سرور در یک خوشه هادوپ را می دهد. MapReduce در حقیقت به دو وظیفه جداگانه و مجزا که در برنامه های هادوپ انجام می شود، اشاره می کند. اولین کار، نگاشت (map) است که یک مجموعه داده را می گیرد و آن را به مجموعه دیگری از داده تبدیل می کند، که در آن عناصر فردی به تاپل ها شکسته می شوند (جفت کلید/مقدار). مرحله کاهش (reduce) خروجی را از یک نگاشت می گیرد و تاپل های داده را به یک مجموعه تاپل کوچک تر ترکیب می کند. همانطور که ترتیب نام MapReduce اشاره دارد، مرحله کاهش همیشه بعد از مرحله نگاشت انجام می شود.