Günümüzün en popüler arama motoru elbette Google fakat bu popülerlik Google bu performansı nasıl sağlıyor sorusunuda beraberinde getiriyor. Herkes internetteki bilgileri depolayabilir ama bunu iyi bi performansta yapabilmek, elindeki bilgisayarlara iş yükünü doğru şekilde dağıtabilmekten geçiyor. Bilgisayarlar arasındaki iş yükünü dağıtma işini Google kendi geliştirdiği MapReduce denilen bir yazılım platformu ile gerçekleştiriyor.
Burada Anahtar değer meyve isimleri olacak ve diyelim ki Hadoop kümemizde iki iş birimimiz var. Üstteki dosyayı Hadoop'a verdik ve Hadoop bize bu dosyayı iki birime dağıtacaktır. Anahtar değerine bakmadan dağıtacak ve diyelim ki tam ortadan ikiye bölerek dağıttı.
MapReduce; büyük veri setleri ile yapılacak işlemlerin birden fazla iş birimine dağıtılmasını sağlayan yöntemdir. Burada büyük veri setleri derken birkaç bilgisayarın bile işleyemeyeceği kadar verinin topladığı setlerden bahsediyorum. Bu setler üzerindeki işlemler serisi çeşitli birimlere dağıtılıyor ve sonra çıktıları birleştirilip sonuç üretiliyor. İki katmandan oluşuyor Map, Reduce.
Map katmanı; İsim-değer çiftlerini girdi olarak alır, yapılacak işlemi gerçekleştirir. Ürettiği sonuç listesini ise girdideki isim ile birlikte çıktı olarak verir.
Reduce katmanı: Map katmanındaki sonuç listelerini toplar ve tek sonuca indirgeme işlemini yapar. Birde fazla iş birimi map işiyle uğraşırken, bir sonraki karman sonuçları toplayıp tek sonuç haline getirir.
Bu sistemin performanslı olması dışındaki bir diğer getirisi ise iş birimlerinden herhangi biri arızalandığında diğerleri çalışmaya devam eder ve arızalanan iş birimindeki görev başka bir iş birimine devredilir. MapReduce kavramını araştırıken Hadoop ismini epeyce gördüm ve bu kavramı anlayabilmek içinde araştırılabilir.
Hadoop Nedir?
Hadoop, google dosya sistemi teknolojisi olan MapReduce algoritmasinı birçok bilgisayara dağıtarak uygulamamızı sağlayan, Java ile yazılmış Açık kaynaklı bir yazılım. Hadoop yatay olarak ölçeklenebilen bir teknoloji bu sebeple kümedeki her makina kendi verisine sahip.
Hadoop'un kullandığı MapReduce tekniğini daha iyi anlamak için karşılaştığım şu örneği verebilirim;
Elimizde büyük bir dosyanın ve bu dosyanın her satırında bir mevye ismi ve yanlarındada o meyve satın alındığında ne kadar para ödendiği yazsın. Amacımız her meyve için toplam ne kadar para harcandığını bulmak. (Aşağıda küçük bir dosyadan örnek veriyorum ama bunun tek tek bakılamayacak kadar büyük bir veri olduğunu düşünelim..)
armut 10
portakal 3
incir 9
armut 9
armut 10
incir 3
mandalina 2
incir 29
Burada Anahtar değer meyve isimleri olacak ve diyelim ki Hadoop kümemizde iki iş birimimiz var. Üstteki dosyayı Hadoop'a verdik ve Hadoop bize bu dosyayı iki birime dağıtacaktır. Anahtar değerine bakmadan dağıtacak ve diyelim ki tam ortadan ikiye bölerek dağıttı.
armut 10
portakal 3
incir 9
armut 9
___________
armut 10
incir 3
mandalina 2
incir 29
Her bölüm kendi eşleme(map) işlemini yaparken benzer anahtar değerlerini aynı toplama yazacak.
Bölüm-1: armut=19, portakal=3, incir=9
Bölüm-2: armut=10, incir=32, mandalina=2
Her bölümün kendi işlemi sona erdikten sonra ingirgeme(reduce) işlemi yapılıyor ve her bölümdeki anahtarlar birde kendi aralarında toplanıyor. Bunun sonucunda;
Armut=29, incir=41, portakal=3, mandalina=2 Bu en son sonuç oluyor.
Hadoop kullanılarak yapılmış birkaç işe bakarsak;
- Facebook Hadoop kullanarak kullancı davranışlarının analizini yapmakta ve sosyal reklamların etkisini ölçmektedir.
- New York Times bilgi işlem ekibi Hadoop kullanrak 150 yıllık arşivlerindeki 11 milyon makaleyi dijitalleştirmiş ve aranabilir hale getirmiş.
İşin güzel yanı çok fazla zaman alabilecek işlemlerin dağtılarak yüksek performansta, kısa sürede yapılıyor olabilmesi:)
Kaynaklar