Hadoop Nedir ve Non High Availability

663

Apache Hadoop küme(cluster) üzerinde büyük verinin saklanmasını ve bu veri üzerinde işlem yapılmasını sağlayan açık kaynaklı bir framework’dür. Hadoop ile bir sunucu kullanarakta binlerce sunucu kullanarakta veri saklama ve işleme yapabiliriz. Burada bahsettiğimiz veri yapısal(structured), yarı yapısal(semi-structured) ve yapısal olmayan (unstructured) verilerdir. Bildiğimiz ilişkisel veritabanları, veriyi yapısal olarak saklar. Hadoop da ise her türlü şekilde veri saklanır ve işlenir. Hadoop’un en önemli özelliği,

verinin alınıp işlenmesi yerine, işlemin verinin olduğu sunucuda gerçekleşmesidir.

Bu sayede çok büyük veriyi işleyebilme kabiliyetine sahiptir.

Hadoop bahsettiğimiz faaliyetleri yaparken, bunları yüksek hata toleransı ve ölçeklenebilirlik ile yapmaktadır. Hadoop, herhangi bir sunucunun, bir an çalışmıyor duruma gelebileceği gerçeğine göre dizayn edilmiştir. Veriler varsayılan olarak üç kopya halinde tutulur. Sunucu durduğunda, kopya veri üzerinden işlemler devam eder.

Kümeye eklenen her bir sunucu performansı doğrusal olarak arttırır. Böylece ölçeklenebilir bir framework ortaya çıkar.

Biz, bu ve takip eden bir kaç makalemiz boyunca Hadoop versiyon 2’yi elimizden geldiğince anlamaya ve anladıklarımızı sizler ile paylaşmaya çalışacağız. Odak noktamız hadoop üzerinde yazılım geliştirme olacak.

Hadoop v2 Bileşenleri

Temel olarak hadoop bileşenlerinin genel gösterimi aşağıdaki gibidir.

HDFS
Hadoop dağıtık dosya sistemidir. Sıradan sunucular üzerinde hata toleranslı, ölçeklenebilir veri depolamasının yapıldığı yerdir. Hadoop’da veriler blok olarak adlandırılan, varsayılan değeri 128MB olan küçük birimler halinde tutulur. Her blok varsayılan olarak 3 kopya halinde saklanır. Eğer bir sunucuda bir problem olursa, o sunucunun tüm bloklarının tekrardan kopyası alınır. Hadoop 2 de üç farklı mimari yaklaşım vardır. İlki ‘Non High Availability’ olarak adlandırılan ve Hadoop 1 de de var olan yapıdır. Bu yapı üzeriden hdfs bileşenlerini detaylandıracağız.

Non High Availability

NameNode: Her küme de bir tane bulunan, küme üzerine dağılmış verilerin metadatasını tutan nodedur. Metadata dediğimiz bilgi, veriler hangi blokta, erişim izinleri vs’dir. NameNode bu bilgileri fsimage isimli bir dosyadan okur ve memory’e alır. Dosya ekleme silme gibi durumlarda, memory üzerinde bilgiyi günceller ve ilgili değişiklikleri edits isimli log dosyasına yazar. NameNode kapanır ise, hadoop biter. “Single Point of Failure”

Secondary NameNode: Asıl NameNode gibi, küme başına bir tane olur. Sanılanın aksini NameNode offline olunca onun yerine geçme gibi bir işlevi yoktur. NameNode için metadatayı yönetmekten sorumludur. NameNode’da yazılan edits log dosyasında bilgileri okur ve güncel metadata bilgisini bir dosya halinde NameNode’a transfer eder. Bu şekilde fsimage dosyası her zaman güncel kalır.

DataNode: Hadoop küme yapısında, verinin asıl tutulduğu yerdir. Bir tane de olabilir bin tane de olabilir. Blokların saklanmasından, kopyalanmasından ve veri erişiminin yönetilmesinden sorumludur. Periyodik olarak NameNode’a heart beat gönderir. Bu şekilde NameNode DataNode’ların durumu hakkında bilgi sahibi olur.

Şimdilik bu kadar. İnşallah faydalı olmuştur.

İyi Çalışmalar

Yorum yaz

Email adresiniz yayınlanmayacaktır.