• google tarafından geliştirilen framework. işlemesi çok uzun zaman alacak büyüklükteki verileri sınıflandırıp, dağıtarak daha kısa sürede tamamlanmasını sağlar.

    (bkz: apache couchdb)
    (bkz: hadoop)
    (bkz: disco)
    (bkz: distributed computing)
  • http://www.youtube.com/watch?v=s9xnybvqlws

    "cloudera is a company that helps developers with big database problems. here the ceo mike olson gives us a tour through the major database changes that are hitting lots of startups now"
  • mongodb definitive guide'da soyle aciklaniyor:

    mapreduce is the uzi of aggregation tools.

    bu ne siddet taraftarligidir...
  • (bkz: big query)
  • şu aralar en favori frameworklerden birisi apache software foundation tarafından geliştirilen (bkz: hadoop)'tur ve (bkz: veri bilimcisi) olarak geçen pek çok ilanda aranan bir özelliktir. bol para ve iyi bir kariyere ulaşmanın hızlı yollarından birisi olarak görülebilir (en azından bir süreliğine).
  • eldeki büyük verinin paralel bir şekilde maplenip, ardından da sadece ihtiyaç olan veriye reduce edilmesiyle sağlanan hızlı bilgi akışı.

    ne olduğu bir nüfus sayımı analojisiyle daha rahat anlaşılabiliyor.

    e-devlet'te dedelerinizin izini sürmenizi sağlayan ii. mahmut, aslında orduya kaç kişi alabileceğini görmek istiyordu. bir gün vezirini çağırıp bu bilgiyi kendisinden istedi.

    vezir kara kara düşünmeye başladı. nüfus sayımında sadece 1 kişi kullansa o nüfus sayımı bitmezdi. onun yerine osmanlı'nın 10 eyaletine birer kişi gönderdi ve sayımı onlara yaptırdı. işte bu kısım parallel mapping oluyor.

    yurdun dört bir yanına gönderdiği görevlilerin ilettiği sayıları toplayan vezir, ii. mahmut'a "padişahım 3.640.996 kişiyi evlerinde zor tutuyoruz" diyerek tek bir sayı verdi. bu işlem de reducing oluyor.

    hem "sadece erkekleri say" diyerek mapping esnasında, hem de "görevlilerden gelen sayıları topla" diyerek reducing esnasında ayrı hesaplamalar yaptırılabiliyor.

    (bkz: parallel programming)
  • map, fonksiyonel programlamadan bildiğimiz map fonksiyonudur. her bir girdiye istenilen fonksiyon uygulanır ve map task'ının sonucunda her bir girdinin fonksiyon uygulanmış hali çıkar. bu çıktılara intermediate output da denir.

    map : (a->b)->a list -> b list

    reduce ise fold fonksiyonu olarak düşünülebilir. bir accumulator vardır ve intermediate data'nın her birine uğrayarak accumulotor'un içeriği artırılır.

    data processing'de ise mapreduce job yukarıdakilere benzer olsa bile map ve reduce task'ların arasında sorting ve shuffling, combining, partitioning gibi ara katmanlar vardır.

    bir örnek verecek olursak kelime sayma işlemi,
    hadoop mapreduce'da key,value veri yapısı kullanılır.

    map input : <satır_id,text>

    foreach word w in text
    emit (w,1)

    map output: <word,1>

    reduce input: <w,values>
    int sum=0
    for each value in values
    sum=sum+value
    emit(w,sum)
    reduce output = <word,sum>

    yukarıda neden map'in outputu reduce'in inputu olmadı diye sorarsak, işte aradaki shuffle and sorting işleminde aynı key'e sahip olan veriler aynı reducer'e gönderilir.
    bu işlemde aynı key'e sahip olan verilerin valueleri bir aggregate edilir.
    kısaca reduce işlemine şu şekilde bir giriş olur,
    <k,[v*]>

    yukarıdaki örnekte şöyle;
    map output:
    <"istanbul",1>
    <"ankara",1>
    <"istanbul",1>
    <"istanbul",1>

    reduce input:
    istanbul key'i için
    <"istanbul",1;1;1>
    ankara için;
    <"ankara",1>

    reduce output:
    <"istanbul",3>
    <"ankara",1>
hesabın var mı? giriş yap