Hadoop ve Bileşenlerine Genel Bakış

01_Hadoop_full

Hadoop, büyük verileri işlemek üzere kullanılan HDFS ve MapReduce özelliklerini bir araya getiren, Java ile geliştirilmiş açık kaynaklı bir frameworktür.

Google, Yahoo, Facebook gibi firmalar devasa boyuttaki veriyi analiz etmek için SQL ve RDBMS sistemleri kullanmıyorlar. Aşağıda Hadoop’un ve Big Data’nın kullanıldığı bir örnek mevcut.

 

 

 

Yeşil ile işaretlenen yerde aradığımız kelime ve mavi ile işaretlenen yerde aradığımız kelimeyle ilgili aramalar mevcut. Kırmızı ile işaretlenen yerde ise “Nokia” kelimesi en çok “Cep Telefonu kategorisinde geçtiği için en üstte bu kategori bulunuyor. Her gün girdiğiniz Facebook’ta sağ kısımda bulunan “Tanıyor Olabileceğin Kişiler”, “Önerilen Gruplar” gibi kısımlar da aşikar olduğunuz örneklerden biri. Olaya buradan bakınca bayağı bir heyecanlı gözüküyor.

HDFS dediğimiz dosya sistemi sayesinde sıradan sunucuların sabit diskleri bir araya getirilerek tek başına büyük bir sanal disk oluşturuluyor. Bu sayede çok büyük boyuttaki birden fazla dosyalar bu sistemde saklanabiliyor. Bu dosyalar varsayılan olarak 64 ve 128 MB’lık bloklar halinde saklanıyor. Her blok, küme içerisinde farklı düğümlere (node), 3 kopyası alınarak dağıtılıyor. Bu sayede veri güvenilirliği sağlanabiliyor.

HDFS, DataNode ve NameNode dediğimiz 2 processden meydana geliyor.

NameNode ana süreç olarak blokların sunucular üzerindeki dağılımından, yaratılmasından, silinmesinden, bir blokta sorun meydana geldiğinde yeniden oluşturulmasından ve her türlü dosya erişiminden sorumludur. Kısacası HDFS üzerindeki tüm dosyalar hakkındaki bilgiler NameNode tarafından saklanır ve yönetilir. Her küme içerisinde bir adet NameNode olabilir.

DataNode ise işlevi blokları saklamak olan işçi (slave) süreçtir. Her DataNode kendi yerel diskindeki veriden sorumludur. Ayrıca diğer DataNode’lardaki verilerin yedeklerini de barındırır. Bir küme içerisinde birden fazla DataNode olabilir.

Blokların düğümler üzerindeki örnek dağılımı;

 

Hadoop’un bir diğer bileşeni olan MapReduce kısmını örneklerle daha derin işleyeceğiz fakat şimdilik üstünden geçmekte fayda var.

MapReduce HDFS üzerindeki büyük dosyaları, verileri işleyebilmek için kullanlan bir yöntem. Biraz daha açmak gerekirse Map ve Reduce birer fonksiyon. İstediğiniz verileri filtrelemek için kullanılan Map fonksiyonu ve bu verilerden sonuç elde etmenizi sağlayan Reduce fonksiyonlarından oluşan program yazıldıktan sonra Hadoop üzerinde çalıştırılır. Hadoop Map ve Reduce’lerden oluşan iş parçacıklarını küme üzerinde dağıtarak aynı anda işlenmesini ve bu işler sonucunda oluşan verilerin tekrar bir araya getirilmesinden sorumludur. 

Alışık olduğumuz dilde anlatmak gerekirse Map fonksiyonunu SQL üzerindeki “SELECT” kelimesi ile verileri seçmemize ve “WHERE” kelimesiyle ilgili sıralamaları yapmaya, Reduce aşaması ise count, sum, having gibi ilgili veri üzerinde hesaplama yapmamıza benzetilebilir.

Hadoop’un gücü de aslında tam olarak buradan gelmektedir. Birden fazla işi aynı anda yaparak ölçeklendirilebilmesi dolayısıyla ne kadar çok veri olursa verinin işlenme hızı da o doğrultuda artmaktadır.

Map ve Reduce fonksiyonlarını şekil üzerinde incelemek gerekirse;

 

Bütün bunların dışında Hadoop büyük veriyi işleme konusundaki diğer projelere de bir çatı görevi görüyor. İlerideki yazılarımızda bahsedeceğimiz Hadoop üzerindeki verileri işlemek için geliştilmiş Pig ve SQL benzeri bir arayüz yardımıyla Hadoop üzerinde Java kullanmadan sorgulama ve analiz işlemlerini yapmak amacıyla Facebook tarafından geliştirilmiş Hive projeleri bunlardan sadece bir kaçı.

Bir Cevap Yazın

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