Bolu Beyi tarafından yazıldı Aralık - 22 - 2016 0 Yorum

Teknolojinin gelişmesi ve internet kullanımının artmasıyla birlikte, büyük veriler ortaya çıkmıştır ve çıkmaya devam etmektedir. Birçok şirket müşteri ilişkileri, ürün satışı, reklam kampanyaları ve buna benzer çeşitli bilgi türleri hakkında geniş veri setleri toplamaktadır. Örneğin Facebook, her gün 15 terabyte veri toplamaktadır. Bununla beraber bu verilerin içerisinde arama yapılmasına ve veriler arasında ilişkilendirme işlemlerinin gerçekleştirilmesine ihtiyaç duyulmuş; bu işlemlerin en verimli şekilde yapılması için de çeşitli çalışmalar yapılmıştır. Söz konusu işlemlerin kullanımına örnek olarak, günlük hayatta sıklıkla kullanılan arama motorları ve sosyal medya verilebilir.

Bu makalede, büyük veri analizlerinde kullanılan ve Google tarafından 2004 yılında duyurulan “MapReduce” modelinden bahsedilecektir. MapReduce, büyük veri setlerini oluşturmak ve işlemek için geliştirilen bir programlama modelidir.

MapReduce modeli, Google tarafından web sayfalarını indekslemek gibi çeşitli amaçlar için kullanılmaktadır. Ayrıca Facebook, Twitter, Linkedin gibi büyük verilerle uğraşan şirketler tarafından da kullanılmaktadır. Bahse konu model, Java, C++, Python, Perl gibi birçok programlama dili ile geliştirilebilmektedir.

MapReduce modeli dağıtık veri işleme yazılımı geliştirmek için son derece popüler bir yöntem haline gelmiştir. MapReduce istatistiksel makine çevirisi, makine öğrenmesi, doküman kümeleme, web erişim log istatistikleri, dağıtık sıralama, dağıtık desen tabanlı arama, tekil değer ayrışımı gibi birçok alanda kullanılmaktadır. Yük dengeleme, ölçeklenebilirlik ve hata toleransı gibi birçok avantaja sahiptir.

MapReduce, “map()” ve “reduce()” fonksiyonlarının birlikte çalışması üzerine inşa edilmiştir. Burada map() fonksiyonu, büyük veri setinin belirli kıstaslara göre bölünmesini ve sistem üzerinde dağıtılmasını sağlamaktadır. Reduce fonksiyonu ise map fonksiyonundan çıkan sonuçların analizini yaparak, probleme uygun bir şekilde birleştirilmesini sağlamaktadır.

MapReduce işleminin örnek bir çalışması aşağıdaki şekilde gösterilmektedir:

 

 

 

 

 

 

 

 

Bir MapReduce algoritması tasarlanırken, hesaplama ve iletişim maliyetleri arasında iyi bir denge kurmak gerekmektedir.

MapReduce işleminin optimizasyonu için zamanlama algoritmalarının tasarımı, özel donanım ve yazılım yardımı ile verimliliğin artırılması gibi konular üzerinde çalışmalar yapılmıştır.

  • Veri seti çok büyük boyutta ise blok boyutu (block size) artırılabilir ve bu sayede görev (task) sayısı azaltılabilir.
  • Map ve Reduce aşamaları arasında ağ üzerinden transfer edilen ve diske yazılan verilerin miktarını azaltmak için, kümeleme işlemi (combining) yapılabilir. Yukarıdaki şekilde de görüleceği üzere mapping işleminden sonra anahtarlar gruplanarak ve sıralama yapılarak shuffling işlemi gerçekleştirilebilir.
  • Verilerin okunacağı veri tipinin string yerine binary olması, diskte daha az yer kaplayacaktır.
  • Map veya Recuce fonksiyonlarından çıkan her bir çıktı için, diskte yeni bir yer tahsis etmek, hafıza dolmasına yol açabilmektedir. Bunun için işlemler bittiğinde, her bir çıktığının diskte kapladığı yer temizlenmelidir.

Ayrıca MapReduce optimizasyonu için çeşitli filtreleme algoritmaları kullanılmaktadır. Örneğin bir web log dosyalarında belirli desenler map aşamasında filtrelenebilir. Bununla beraber spesifik karakterler belirlenerek, veri seti içerisinde önceden arama yapılabilir ve iş yükü azaltılabilir.

MapReduce işleminde “K-Means Algoritması” da kullanılmaktadır. Bu algoritmaya göre;

  • Map aşamasında veri setinden bir blok okunur, her bir anahtar en yakın noktaya (centroid) atanır.
  • Reduce aşamasında ise yeni centroid yeniden hesaplanır.
  • Eski ve yeni centroid değerleri iteratif bir şekilde önceden belirlenen maksimum iterasyon sayısına ulaşılana kadar karşılaştırılır.
  • Önceki ve yeni değer eşitlendiğinde iterasyon durdurulur.

 

 

 

 

 

 

 

 

 

 

Birçok şirket, çeşitli amaçlarla MapReduce çatısının bir uygulaması olan Hadoop kütüphanesini kullanmaktadır. Hadoop, Java ile geliştirilmiş açık kaynak kodlu bir kütüphane olup, Dağıtık Dosya Sistemi ve MapReduce yazılımımın bir araya gelmesiyle oluşmaktadır.


Time limit is exhausted. Please reload CAPTCHA.