Apache Hadoop HDFS Mimarisi

İçerik

  1. NameNode
  2. DataNode
  3. İkincil NameNode
  4. Bloklar
  5. Çoğaltma Yönetimi
  6. Raf Farkındalığı
  7. Raf Farkındalığı Avantajları
  8. HDFS Okuma / Yazma
    1. Boru Hattı Kurma
    2. Veri Akışı
    3. Boru Hattı Kapatılması
  9. HDFS Okuma Mimarisi

HDFS (Hadoop Dağıtılmış Dosya Sistemi), her dosyanın önceden belirlenmiş bir bir boyuta bölünmüş blok yapılı bir dosya sistemidir. Bu bloklar bir veya bir kaç makinenin oluşturduğu kümelerde saklanır. Hadoop HDFS Mimarisinde, bir küme, tek bir NameNode (Ana Düğüm) ve diğer tüm düğümler DataNode (Slave düğümleri) içeren bir Master / Slave mimarisi izler.

Master/Slave

NameNode (İsim Düğümü):

NameNode, DataNode’da bulunan blokları koruyon ve yöneten Apache Hadoop Mimarisinde bulunan ana düğümdür. NameNode, Dosya Sistemi İsim Alanını yöneten ve istemciler tarafından dosyalara erişimi denetleyen bir sunucudur. HDFS Mimarisi, kullanıcı verilerinin hiçbir zaman NameNode üzerinde bulunmayacağı şekilde oluşturulmuştur. Veriler yalnızca DataNode’larda bulunur. NameNode İşlevleri:

DataNode (Veri Düğümü):

DataNode’lar, HDFS’deki bağımlı düğümlerdir. DataNode, NameNode’un aksine, yüksek özellikli olmasına gerek olmayan bir sistemdir. DataNode, veriyi ext3 veya ext4 yerel dosyasına depolayan bir blok sunucudur.

DataNode İşlevleri

Secondary NameNode (İkincil İsim Düğümü)

Secondary NameNode yardımcı bir arka plan olarak birincil NameNode ile aynı anda çalışır. Secondary NameNode yedek bir NameNode değildir. İşlevleri: Seconday NameNode

Bloklar:

Bloklar, verilerin saklandığı sabit diskinizdeki en küçük parçalardır. Genel olarak, herhangi bir dosya sisteminde, veriler bloklar koleksiyonu olarak saklanır. Benzer şekilde, HDFS, her dosyayı Apache Hadoop kümesinde dağınık bloklar olarak depolar. Apache Hadoop 2’de her bloğun varsayılan boyutu 128 MB’dir. Bu boyut değiştirilebilir. Blocks HDFS’de her dosyanın blok boyutunun tam katında (128 MB, 256 MB) depolanması gerekli değildir.

Replication Management (Çoğaltma Yönetimi):

HDFS, büyük verileri dağıtılmış bir ortama veri blokları halinde depolamanın güvenli bir yolunu sunar. Bu veri blokları aynı zamanda hata toleransı sağlamak için çoğaltılmaktadır. Varsayılan olarak çoğaltma sayısı 3’tür ve değiştirilebilir. Her bir bloğun 3 kez çoğaltıldığı ve farklı DataNode’larda depolandığı bir örnek aşağıdadır. Block Replication NameNode, çoğaltma faktörünü korumak için DataNode’dan periyodik olarak blok raporu toplar. Bu nedenle, fazladan veya eksik çoğaltma yapılırsa, NameNode blokları siler veya ekler.

Rack Awareness (Raf Farkındalığı):

Rack-Awareness NameNode tüm kopyaların aynı rafta veya tek bir rafa depolanmamasını sağlar. Gecikmeyi azaltmanın yanı sıra hata toleransı sağlamak için yerleşik bir Rack Awereness Algoritması kullanır. Çoğaltma faktörü 3 olduğu düşünülürse, algoritma, bir bloğun ilk kopyasını yerel bir raf üzerinde depolar ve sonraki iki kopyayı farklı (uzak) bir rafa depolar. Aynı rafta ikiden fazla kopyanın bulunmaması koşuluyla, kopyaların geri kalanı rastgele DataNode’lara yerleştirilir. Bir Hadoop kümesi örneği aşağıdadır. DataNode’lar ile doldurulan birden fazla raf bulunur. Rack-Awareness

Raf Farkındalığı Avantajları:

HDFS Okuma / Yazma

Bir HDFS istemcisinin 248 MB boyutundaki bir dosyayı yazmak istediğini varsayalım. HDFS-File-Block Veriler HDFS’ye yazılmak istendiğinde aşağıdaki adımlar gerçekleşecek:

  1. Boru Hattı Kurma
  2. Veri Akışı ve Çoğaltma
  3. Boru Hattının Kapatılması

1. Boru Hattı Kurma

Blokları yazmadan önce, istemci, IP listelerinin her birinde bulunan DataNode’un verileri alamaya hazır olduğunu doğrulamaktadır. Bunu yaparken, istemci, ilgili bloğun ilgili listesindeki DataNode’ları bağlayarak blokların her biri için bir boru hattı oluşturur. Blok A’yı düşünelim. Blok A için = { DataNode 1, DataNode 4, DataNode 6 } HDFS Boru Hattı Kurma Boru hattı kurmak için aşağıdaki adımlar gerçekleştirilir:

2. Veri Akışı

Boru hattı hazırlandığında, istemci boru hattına seri halde veri iletir. İstemic sadece DataNode 1’e bloğu kopyalar. Çoğaltma işlemi daime DataNode’lar tarafından sırayla yapılır. Çoğaltma DataNode 1 -> DataNode 4 -> DataNode 6 şeklinde yapılır.

3. Boru Hattı Kapatılması

Blok 3 DataNode’da kopyalandıktan sonra, istemci ve NameNode verilerin başarıyla yazıldığından emin olmak için bir dizi onay alacaktır. Ardından, istemci TCP oturumunu sona erdirmek için boru hattını kapatacaktır. Onay işlemi ters sırada gerçekleşir. Son DataNode’dan ilk DataNode’a oradan istemciye son olarak da NameNode ulaşır. NameNode meta verilerini (MetaData) güncelleyecek ve istemci boru hattını kapatacaktır.

HDFS Okuma Mimarisi

Okuma işlemi için aşağıdaki adımlar gerçekleşir: