HDFS: Nedir,Nasıl Çalışır ve Neden İhtiyacımız Var?

Büyük veri ile ilgili problemleri anlamak istiyorsak bunların başında Hadoop Dağıdık Dosya Sistemi yani Hadoop Distributed File System (HDFS) gelir. Bu yazıda neden HDFS gibi farklı bir dosya sistemine ihtiyaç duyulduğunu göreceğiz.

Öncelikle şunu belirtmek gerekir ki eğer şu anda bu yazıyı okuyorsanız zaten hali hazırda bir dosya sistemi kullanıyorsunuz demektir çünkü bir depolama cihazının kullanılabilir olması için mutlaka bir dosya sistemi türünü kullanması gerekir. Peki neden bilgisayarlar dosya sistemi kullanır?

Kağıt parçaları vs Kitap

Bir konu düşünelim ve bu konu hakkında iki kişinin elinde iki farklı türde kaynak olsun. Birincisi bu konuyu parçalar halinde kağıtların içinde ikincisi ise bir kitap içinde barındırıyor olsun. Eğer bu kişilerden konunun 32. bölümüne gitmelerini istersem tahmin edeceğiniz gibi elinde kitap bulunan kişi bunu çok daha kolay bir şekilde gerçekleştirecektir. Çünkü 32. bölüme sayfa numaralarını kullanarak, index bilgisi ile gidecektir. Tıpkı iyi organize edilmiş bir kitapta olduğu gibi dosya sistemleri de depolanan veriye kolay bir şekilde erişmemizi sağlar.

Dosya sistemlerinin genel olarak özellikleri şunlardır :

  • Verinin nasıl depolandığı
  • Veri hakkında metadata
  • İzinler ve güvenlik
  • Depolama kapasitesini efektif şekilde yönetmek
Popüler dosya sistemleri ve depolama kapasiteleri

Yukarıda, popüler dosya sistemleri ve bunların depolama kapasiteleri gösterilmiştir. Görüldüğü üzere yeni nesil dosya sistemleri ExaByte(EB) gibi çok büyük verileri depolayacak kapasiteye sahiptir. Peki madem durum böyle neden HDFS gibi yeni bir dosya sistemine ihtiyaç duyuyoruz? Çünkü verilerimizi bloklar halinde, paralel işlem yapabilecek şekilde ve veri kaybını en aza indirerek depolamak istiyoruz. Bu ihtiyaçlarımızdan ötürü HDFS ortaya çıkmış oluyor.

HDFS: Neden İhtiyacımız Var?

Ext4 dosya sistemine sahip depolama aygıtları

Diyelimki elimizde 10 tane ‘ext4’ dosya sistemine sahip bilgisayar var. Bunların her birinin depolama birimleri kendi içinde bir blok sistemine sahiptir. Birbirleri arasında herhangi bir iletişim yoktur ve bu yüzden lokal dosya sistemi (local file system) olarak adlandırılırlar. Ayrıca bu sistemler kendi içinde blok yapısına sahiptir ve verileri bloklar içinde depolayabilir. Büyük veri adına konuşacak olursak bu sistemlerde belirgin bir şekilde ortaya çıkan iki sorunu hemen farkedebiliriz.

1- Büyük bir veri işlemek istersem tek bir lokal sistemden buna erişimim çok uzun sürecektir.

2- Herhangi bir sistemde arıza olduğu durumda veri geri getirelemeyecek şekilde kaybolur.

İlk problemimize çözüm olarak geliştirilmiş yöntemin adı dağıtık veri sitemi(distributed file system)’dir. Yani diyelimki elimde 700MB veri varsa bunu sabit boyutlarda (örneğin 128MB) bloklara paylaştırırım. 5 adet bloğa 128MB veri koyup kalan 60MB veriyi farklı bir bloğa koyarım. Bu yapı da cluster mimarisi olarak bilinir ve verilerin hızlı bir şekilde yönetilmesini sağlar.

İkinci problemin çözümü de aslında aşina olduğumuz bir yaklaşımdır. Eğer elimdeki bir verinin kaybolma ihtimalini mininuma indirgemek istiyorsam onun yedeğini alırım. Aynı durum HDFS mimarisi için de geçerlidir. 700MB veriyi, 128MB’lık bloklara ayırıp birden fazla sunucuda tutarsam herhangi birinde problem olması durumda bir diğerinden veriye gayet rahat ulaşabilirim.

HDFS mimarisi

Yukarıdaki resimde de görüldüğü gibi var olan sunucularda(commodity server) herhangi bir fiziksel değişimde bulunmaksızın HDFS sistemini bunların üzerine getirerek bahsini ettiğimiz problemlere çözüm üretiriz. HDFS’in en büyük avantajı SSD gibi pahalı teknolojilere gerek duymadan var olan sistemler üzerinde en efektif sonucu veriyor olmasıdır.

Reference : Udemy, Hadoop Starter Kit

Full Stack Developer