MapReduce - Giriş

MapReduce, Büyük Verileri birden çok düğümde paralel olarak işleyebilen uygulamalar yazmak için bir programlama modelidir. MapReduce, büyük hacimli karmaşık verileri analiz etmek için analitik yetenekler sağlar.

Büyük Veri nedir?

Büyük Veri, geleneksel hesaplama teknikleri kullanılarak işlenemeyen büyük veri kümelerinin bir koleksiyonudur. Örneğin, Facebook veya Youtube'un günlük olarak toplaması ve yönetmesi için ihtiyaç duyduğu veri hacmi Büyük Veri kategorisine girebilir. Bununla birlikte, Büyük Veri yalnızca ölçek ve hacimle ilgili değildir, aynı zamanda aşağıdaki yönlerden bir veya daha fazlasını içerir - Hız, Çeşitlilik, Hacim ve Karmaşıklık.

Neden MapReduce?

Geleneksel Kurumsal Sistemler, verileri depolamak ve işlemek için normalde merkezi bir sunucuya sahiptir. Aşağıdaki çizim, geleneksel bir kurumsal sistemin şematik bir görünümünü tasvir etmektedir. Geleneksel model, büyük hacimlerde ölçeklenebilir veriyi işlemek için kesinlikle uygun değildir ve standart veritabanı sunucuları tarafından barındırılamaz. Dahası, merkezi sistem aynı anda birden fazla dosyayı işlerken çok fazla darboğaz yaratır.

Google, bu darboğaz sorununu MapReduce adlı bir algoritma kullanarak çözdü. MapReduce, bir görevi küçük parçalara böler ve bunları birçok bilgisayara atar. Daha sonra sonuçlar tek bir yerde toplanır ve sonuç veri setini oluşturmak için entegre edilir.

MapReduce Nasıl Çalışır?

MapReduce algoritması, Map ve Reduce olmak üzere iki önemli görev içerir.

  • Harita görevi, bir veri kümesini alır ve bunları, tek tek öğelerin demetlere (anahtar-değer çiftleri) bölündüğü başka bir veri kümesine dönüştürür.

  • Azaltma görevi, Harita'daki çıktıyı bir girdi olarak alır ve bu veri gruplarını (anahtar / değer çiftleri) daha küçük bir grup kümesinde birleştirir.

Azaltma görevi her zaman harita işinden sonra gerçekleştirilir.

Şimdi aşamaların her birine yakından bakalım ve bunların önemini anlamaya çalışalım.

  • Input Phase - Burada, bir girdi dosyasındaki her kaydı çeviren ve ayrıştırılan verileri eşleyiciye anahtar-değer çiftleri biçiminde gönderen bir Kayıt Okuyucumuz var.

  • Map - Harita, bir dizi anahtar-değer çifti alan ve sıfır veya daha fazla anahtar-değer çifti oluşturmak için her birini işleyen kullanıcı tanımlı bir işlevdir.

  • Intermediate Keys - Eşleştirici tarafından oluşturulan anahtar / değer çiftleri ara anahtarlar olarak bilinir.

  • Combiner- Birleştirici, benzer verileri harita aşamasından tanımlanabilir setler halinde gruplayan bir tür yerel Redüktördür. Giriş olarak eşleyiciden ara anahtarları alır ve değerleri bir eşleyicinin küçük bir kapsamında toplamak için kullanıcı tanımlı bir kod uygular. Ana MapReduce algoritmasının bir parçası değildir; isteğe bağlıdır.

  • Shuffle and Sort- Azaltıcı görevi, Karıştır ve Sırala adımıyla başlar. Gruplanmış anahtar / değer çiftlerini Redüktörün çalıştığı yerel makineye indirir. Ayrı anahtar / değer çiftleri, anahtara göre daha büyük bir veri listesine göre sıralanır. Veri listesi, eşdeğer anahtarları bir arada gruplandırır, böylece değerleri Reducer görevinde kolayca yinelenebilir.

  • Reducer- Redüktör, gruplanmış anahtar-değer eşleştirilmiş verilerini girdi olarak alır ve her birinde bir Reducer işlevi çalıştırır. Burada veriler toplanabilir, filtrelenebilir ve çeşitli şekillerde birleştirilebilir ve geniş bir işlem yelpazesi gerektirir. Yürütme bittikten sonra, son adıma sıfır veya daha fazla anahtar-değer çifti verir.

  • Output Phase - Çıktı aşamasında, son anahtar-değer çiftlerini Reducer işlevinden çeviren ve bunları bir kayıt yazıcı kullanarak bir dosyaya yazan bir çıktı biçimlendiricimiz var.

Küçük bir diyagram yardımıyla Map & f Reduce iki görevi anlamaya çalışalım -

MapReduce-Örnek

MapReduce'un gücünü anlamak için gerçek dünyadan bir örnek alalım. Twitter günde yaklaşık 500 milyon tweet alıyor, bu da saniyede yaklaşık 3000 tweet anlamına geliyor. Aşağıdaki resim Tweeter'ın tweet'lerini MapReduce yardımıyla nasıl yönettiğini göstermektedir.

Çizimde gösterildiği gibi, MapReduce algoritması aşağıdaki eylemleri gerçekleştirir -

  • Tokenize - Tweet'leri token haritalarına dönüştürür ve bunları anahtar-değer çiftleri olarak yazar.

  • Filter - Belirteç haritalarından istenmeyen kelimeleri filtreler ve filtrelenmiş haritaları anahtar-değer çiftleri olarak yazar.

  • Count - Kelime başına bir jeton sayacı oluşturur.

  • Aggregate Counters - Küçük yönetilebilir birimlere benzer sayaç değerleri toplamı hazırlar.