Birkaç yıl önce, MapReduce dağıtılmış programlama devrimi olarak selamlandı. Aynı zamanda eleştirmenler de vardı, ancak genel olarak hevesli bir yutturmaca vardı. Hatta patentli bile oldu! [1]
Adı anımsatır map
ve reduce
fonksiyonel programlamada, ama ben okuduğumda (Vikipedi)
Harita adımı: Ana düğüm girişi alır, daha küçük alt problemlere böler ve bunları çalışan düğümlere dağıtır. Bir işçi düğümü bunu tekrar yapabilir ve çok seviyeli bir ağaç yapısına yol açar. İşçi düğümü daha küçük olan sorunu işler ve yanıtı ana düğümüne geri gönderir.
Küçültme adımı: Ana düğüm daha sonra tüm alt sorunların cevaplarını toplar ve çıktıyı oluşturacak şekilde bunları birleştirir - başlangıçta çözmeye çalıştığı sorunun cevabı.
veya [2]
MAP'ın Internals: [...] MAP giriş değerini kelimelere ayırır. [...] MAP, girişin verilen her bir anahtar / değer çiftini potansiyel olarak birçok ara anahtar / değer çifti ile ilişkilendirmek içindir.
REDUCE'in İç: [...] [REDUCE] zorunlu birleştirme gerçekleştirir (örneğin, azaltma): birçok değer alır ve bunları tek bir değere düşürür.
Yardım edemem ama düşün: bu bölünme ve fethetme (Mergesort anlamında), sade ve basit! Öyleyse, MapReduce'da bir yerde (kavramsal) bir yenilik var mı, yoksa belirli senaryolarda yararlı olan eski fikirlerin yeni bir uygulaması mı?
- ABD Patenti 7,650,331: "Verimli büyük ölçekli veri işleme için sistem ve yöntem" (2010)
- Google'ın MapReduce programlama modeli - R. Lämmel (2007) tarafından revize edildi