Map – Reduce Nedir?

Map-Reduce tanım olarak büyük verilerin işlendiği programlama yapısı olarak açıklanabilir.

Tipik bir Map-Reduce veri işleme biçimi birkaç adımdan oluşur. Bu adımlar Input, Splitting (Veriyi Bölmek), Mapping (İlgili Düğümlerde İşlemek) , Shufling (Her düğümde saymak), Reducing (Sonuçları Toplamak) ve Final Result (Raporlamak) şeklindedir.

Tüm bunları örnekler vererek, kümülatif bir şekilde anlatıp, Map-Reduce’un çalışma prensibini kavramanıza yardımcı olmaya çalışacağım.

Önce elimizde büyük veri olmadığını ve oldukça ufak bir müşteri bilgi sistemi geliştirdiğimizi düşünelim.

Bu ufak sistemin veritabanında yalnızca 100 müşterinin bazı bilgileri olsun.
Bu bilgiler, TC Kimlik Numarası, Ad, Soyad, Yaş alanları olsun.
Biz bu 100 kişi içinden soyadları ‘Yıldırım’ olan kişilerin içindeki en genç müşteriyi bulmak istesek

SELECT MIN(yas) FROM müsteri WHERE soyad=‘Yıldırım’

şeklinde bir SQL sorgusu ile sonuca rahatça ulaşabiliriz.

Peki, ya bu 100 kişilik sistem yerine, Türkiye’de yaşayan tüm insanlar olarak değiştirseydik?

Hatta veritabanındaki alanlara nüfus bilgisi, adres, telefon, meslek, gelir durumu, kullandıkları kredi kartları bilgileri,sipariş durumu, eğitim durumu alanları ekleseydik?
Daha sonra, soyadı ‘Yıldırım’, eğitim durumu ‘Üniversite’ olan insanların sayılarını bulmak istesek ne yapardık?

Düşündüğünüz gibi, oldukça büyük bir veri ile karşı karşıyayız ve klasik SQL sorgularını kullanarak bu analizi yapmak bir hayli uzun zaman alacaktır.

Bu durumda devreye Map-Reduce giriyor. Bu denli büyük verilerin onlarca sunucu(cluster) üzerinde(clusterlar daha fazla da olabilir) dağıtık olarak kayıtlandığını düşünelim.
(Dağıtık veri işleme sistemini Hadoop yazımı inceleyerek kavrayabilirsiniz)

Map-Reduce her bir clusterdaki verileri dolaşarak istediğimiz analizi hızlı ve etkin şekilde yapabilmemize imkan sağlıyor.

Yazılışı çeşitli dökümanlarda birleşik gibi görünsede Map-Reduce aslında Map(Mapping) ve Reduce(Reducing) iki ayrı işlem yapan, bir arada çalışarak dağıtık dosya sistemlerinde veri analizinin oldukça kolaylaştırılmasını sağlayan methodlardır.
Map, bir listedeki her bir elemana tek tek bir kuralı uygular.
Reduce, Map ile elde edilen sonuçları belli bir sistematik ile analiz ederek birleştirir.
Yaptığı analiz sonunda da bir değer döndürür.
Çok basit bir örnek ile zihnimizde canlandıralım;

Elimizde bir küme olduğunu düşünelim.
Bu kümenin her bir elemanına 5 ekleyelim.
5 eklediğimiz kümenin içindeki çift sayıların toplamını alacağımızı varsayalım.

Bu listenin her bir elemanına 5 ile toplama işlemini içeren bir fonksiyon uygulayacağız.

Bu işlem sonucu ikinci veri kümesini elde ettik. Her bir elemana aynı fonksiyonu uyguladı ve hepsinin ayrı ayrı değeri değişti.
Bu işlem Map leme işlemi olarak düşünülebilir, çalışma mantığı bu şekildedir.

Şimdi bu değerlerin içindeki çift sayıların toplamını alalım alalım. 9 sayısı haricindeki diğer tüm çift sayılar toplanacaktır.
Bu işlem de Reduce işlemi olarak düşünülebilir.
Yukarıda da gördüğünüz üzere başta 5 elemanlı bir veri kümesi iken, Reduce işlemi sonucu output olarak yalnızca bir değer elde ettik.

Map’leme işlemi, dağıtık halde bulunan sunucu disklerindeki (clusters) verilere, clusterların her birinin nerelerde olduğunu önemsemeksizin belli bir fonksiyonu o verilere uygular. Ve her bir cluster mapleme işlemi sonucu elde ettiği veriyi kendi diski üzerinde tutar.
Daha sonra Reduce işlemi her bir clusterdaki Map’lenmiş verileri alır ve belli bir kurala göre (bizim belirleyeceğimiz yönteme göre) analiz eder ve analiz edilmiş veriyi çıktı olarak verir. Örnekten de anlaşılabileceği gibi Map işleminde ilk işleme alınan kümenin eleman sayıları aynı kalırken, Reduce işlemi analiz sonucu bir çıktı vermektedir.

Map-Reducu aşamalarının  olduğu, her kelimeden kaçar tane olduğunu sayan örnek görseli inceleyelim;

 
Bu görselden da anladığınız üzere farklı clusterlar üzerinde karmaşık biçimde duran veriler,
Önce sayır satır Mapper’a iletiliyor,
Satırlar bölünüyor(Splitting),
Bölünmüş kelimeler sıralanarak sayılıyor. (Shuffling)
Sıralanıp sayılmış verilere sonraki adımda Recude Methodu uygulanıyor.(Reducing) Her kelimeden toplam ne kadar geçtiği hesaplanıyor.
Son aşamada ise uygulamadan isteden kelimelerin sayılmış hali Final Output olarak veriliyor.

Özet olarak, büyük verileri işleyebilmek için pahalı donanımlar satın almak yerine, bir veya birden fazla sıradan sunuculardan oluşan bir sistemde Map-Reduce ile aynı işlemi hızlı ve efektif bir biçimde uygulayabilirsiniz.

Günümüzde bu yapıyı, dağıtık dosya sistemi ile çalışan (Google,Facebook, Yahoo gibi.)bir çok büyük firma kullanmaktadır.

Umarım sizin için faydalı bir yazı olmuştur. Yorum ve görüşlerinizden bahsetmeyi unutmayın lütfen.

İyi çalışmalar dilerim.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir