MapReduce
- Algoritmalar kursu
- Uzman seviye
- Ders 35/41
- 4 dk
MapReduce ile dağıtık hesaplama öğrenirsin.
MapReduce
MapReduce, büyük veriyi dağıtık kümelerde işlemek için kullanılan bir programlama modelidir. Üç aşamadan oluşur: map, shuffle ve reduce.
Map aşaması her girdi parçasını (anahtar, değer) çiftlerine dönüştürür. Shuffle aşaması aynı anahtara sahip çiftleri aynı işçiye gruplar. Reduce aşaması her grup için birleştirme yapar.
Bu model, kelime sayma, ters indeks ve log analizi gibi görevlerde yaygın olarak kullanılır.
Shuffle ve reduce
Shuffle aşaması, map çıktısındaki tüm (anahtar, değer) çiftlerini anahtara göre gruplar. Aynı anahtara sahip tüm değerler aynı reduce işçisine gönderilir.
Reduce aşaması her grup için birleştirme yapar; örneğin kelime saymada değerleri toplar. Bu ayrım, dağıtık ortamda paralel çalışmayı sağlar.
Sayfa sıralama, ters indeks ve istatistik hesaplama bu yapıyla kolayca ifade edilir.
Uygulama mapreduce_count fonksiyonu
mapreduce_count(documents) yaz. Her dokümandaki kelimeleri (kelime, 1) çiftleri olarak üretip say. Sonucu sıralanmış (kelime, sayı) çiftleri listesi döndür. print(mapreduce_count(['elma elma armut', 'elma muz'])) ile [('armut', 1), ('elma', 3), ('muz', 1)] yazdır.
Başlangıç kodu
def mapreduce_count(documents):
# MapReduce ile kelime sayısıÖrnek çözüm
def mapreduce_count(documents):
# MapReduce ile kelime sayısı
mapped = []
for doc in documents:
for word in doc.split():
mapped.append((word, 1))
counts = {}
for word, one in mapped:
counts[word] = counts.get(word, 0) + one
return sorted(counts.items())
print(mapreduce_count(['elma elma armut', 'elma muz']))Beklenen çıktı
[('armut', 1), ('elma', 3), ('muz', 1)]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 map çıktısı
for word in doc.____():
mapped.append((word, 1))
for word in doc.split():
mapped.append((word, 1))
Açıklama: split() ile kelimelere ayrılır.
2 MapReduce kavramları
| Kavram | Anlamı |
|---|---|
map |
(anahtar, değer) üretir |
shuffle |
Aynı anahtarı gruplar |
reduce |
Birleştirir |
büyük veri |
Dağıtık küme |
3 Reduce aşaması ne yapar?
for word, one in mapped:
counts[word] = counts.get(word, 0) + one- Veriyi sıralar
- Veriyi böler
- Aynı anahtarları birleştirir Doğru cevap
- Veriyi filtreler
Açıklama: Reduce, aynı anahtara sahip değerleri birleştirir.