October 2016 - H. Egemen Ciritoglu
HDFS, NTFS gibi datayı bloklara ayırarak depolar. NTFS gibi son derece oturmuş bir dosya sistemi yerine HDFS kullanılmasını amacı Hadoop uygulamalarının erişilebilirliği yüksek dağıtık dosya sistemine ihtiyacı vardır. NTFS bu açıdan bakıldığında yetersiz kalmaktadır.
NTFS Limitleri HDFS Limitleri
Eğer harddisk alanı dolduysa n’olur ? Hiç bir dosya depolanamaz. HDFS çeşitli clusterlarda veriyi tuttuğu için kolaylıkla bu alan arttırılabilir.
Eğer ana bilgisayar(server) veya harddisk hataya düşerse n’olur ? HDFS güvenilirdir. Bir hata oluşsa dahi diğer datanodelardan replikalarıyla değiştirilebilir.
NTFS & EXT3 dosya sistemleri genellikle 4 veya 8 KB bloklar halinde verileri tutarlar. Böylelikle birden fazla okunma yapılması gerekir. HDFS’in varsayılan blok büyüklüğü 64MB. böylelikle daha az dosya tutulur ve tutulması gereken metadata bilgiside bu sayede azalır. Ayrıca HDFS harddiskten okuma yapmak üzerine optimize edilmiştir.
NFS yönetimi genelde komut satırı veya genel sistem yönetimi araçlarıyla yapılır. HDFS bize performans durmunu ve dosyaları görüntülememiz için web sunucusu sunar.( Varsayılan portu 50070 tir.)
Ntfs ve hdfs karşılaştırması 
HDFS her dosyanın 3 kopyası(replication) tutulmaktadır. Bu sayede bir datanode ölse bile diğer datanodelerından veri kurtarılabilmektedir. İstendiği takdirde bu değer değiştirilebilmektedir. Bunun için hadoop’un klasöründe ki aşağıdaki dosya düzenlenmelidir.
Ya da bunun alternatifi olarak her dosyanın replikası sayısı tek tekte belirlenebilir. Bunun için aşağıdaki komut kullanılabilir. Buna bir ek daha aşağıdaki ikinci komut -R (özyinelemeli)recursive olarak tüm dosyalar için çalışacaktır.
hadoop fs –setrep –w 3 /hduser/somefile.txt
hadoop fs –setrep –w 3 -R /hduser/
HDFS’in birincil önceliği datanın güvenirliğini sağlamaktır. HDFS’te hata 3 tür durumda görülebilir:
Network partitions failure
Her DataNode NameNode düzenli olarak heartbeat(kalp atışı) yollar. Network bölümlenmesi DataNodeların bağlantısını kaybetmesine sebep olabilir. Bu durumda NameNode heartbeat in ulaşmadığını tespit eder. Namenode bu heartbeat gelmeye node’u ölü olarak işaretler. Bu durumda yeni GÇ isteği yollamaz.Artık bu node HDFS erişilebilir değildir. Bu ölü data node belirlenen bazı bloklarının kopyalanmasına(çoğaltılmasına) yol açabilir. Böylelikle daima verinin güvenirliliği sağlamaktadır. 
Faydalı fs shell komutları:
hduser altında folder isimli dosya oluştur.
bin/Hadoop dfs -mkdir /hduser/folder
hduser altında folder isimli dosyayı siler.R parametresi, recursive olarak uygular yani tüm alt dosyalarıda siler.
bin/Hadoop fs -rm -R /hduser/folder
hduser altında folder isimli dosyanın içeriğini görüntüler
bin/Hadoop dfs -cat /hduser/folder
Bazı hdfs komutları
Hadoop nedir? (Büyük Veri ve Hadoop’a Giriş 2)
Hadoop, sıradan sunuculardan (commodity hardware) oluşan küme (cluster) üzerinde büyük verileri işlemek amaçlı uygulamaları çalıştıran ve Hadoop Distributed File System (HDFS) olarak adlandırılan bir dağıtık dosya sistemi ile Hadoop MapReduce özelliklerini bir araya getiren, Java ile geliştirilmiş açık kaynaklı bir kütüphanedir. Daha yalın bir dille anlatmak gerekirse, Hadoop, HDFS ve MapReduce bileşenlerinden oluşan bir yazılımdır.
2005 yılında Mike Cafarella ve Doug Cutting (yazılıma çocuğunun oyuncak filinin adını vermiştir) tarafından oluşturulan Hadoop, başlangıçta web ile ilgili arama verileri için tasarlanmıştı. Bugün Hadoop, her çeşit kuruluş ve endüstride kullanılan Apache Software Foundation’ın açık kaynak kodlu ve topluluk tarafından oluşturulan bir projesidir.
HDFS(Hadoop Distributed File System): Dağıtık dosya sistemi, Hadoop kümeleri içinde yüksek performanslı erişim imkânı sunan Hadoop uygulamaları tarafından kullanılan birincil depolama sistemidir. Hadoop çok sayıda sıradan sunuculara kurulacağı için server hataları oldukça fazla olabilir. HDFS geliştirilirken temel amaçlardan biri bu hataların mümkün mertebe tolere edebilmek için oluşturulur. Bu sayede bilgisayar düğümleri(node) arasındaki veri transferi ne kadar hızlı olsa da sistemin bu hatalardan sistem etkilenmeden çalışmaktadır.
Hadoop’ta 4 tip node(düğüm) bulunur. Bu düğümler:
ŞEKİL 2.1 Hadoop’un Node(Düğümleri)
Görevlerin çalışmasını kontrol eden iki tip node vardır: jobtracker ve tasktracker dır. Jobtracker tasktracker da çalışacak bütün jobların çalışmasını kontrol eder. Tasktracker ise görevleri çalıştırarak, ilerleme raporlarını jobtracker’a gönderir. Jobtracker her job için genel ilerlemeyi tutar. Eğer task(görev) başarısız olursa jobtracker başka bir tasktracker da çalışması için programlayabilir.
NameNode, filesystem namespace(dosya sistemi) kontrol eder. Dosya sistemi ağaçlarını ve bu ağaçlarda bütün dosyaların ve klasörlerin metadatalarını bakımlarını sürdürür. DataNode, client veya namenode tarafından istendiği takdir de blokları tutmak veya getirmekte görevlidirler. Düzenli olarak namenode’a hangi blokları tuttuklarını raporlar.