İçindekiler:
- NameNode başlatma ve çalışma
- Veri yazma
- Okuma Verileri
- Hadoop kümesindeki verileri dengelemek
- NameNode ana sunucu tasarımı
Video: HDFS - Intro to Hadoop and MapReduce 2024
NameNode, Hadoop Dağıtık Dosya Sistemi'nin (HDFS) adres defteri görevi görür çünkü yalnızca hangi bloklar tek tek dosyalar oluşturur, ancak bu blokların ve kopyaların her birinin nerede depolandığı da. Bir kullanıcı bir dosyayı HDFS'de saklarken, dosya veri bloklarına bölünür ve bu veri bloklarının üç kopyası Hadoop kümesi boyunca bağımlı düğümlerde saklanır.
Bu takip edilmesi gereken çok sayıda veri bloğu. Tahmin edebileceğiniz gibi cesetlerin nereye gömüldüğünü bilmek NameNode'u bir Hadoop kümesinde kritik öneme sahip bir bileşen haline getirir. NameNode kullanılamıyorsa, uygulamalar HDFS'de depolanan verilere erişemez.
Aşağıdaki şekle bakarsanız, bir ana düğüm sunucusunda çalışan NameNode arka plan programını görebilirsiniz. Veri blokları ve bunların karşılık gelen dosyaları ile ilgili tüm haritalama bilgileri adlı bir dosyada saklanır.
HDFS bir günlük dosyası dosyası sistemidir; bu, herhangi bir veri değişikliğinin, son kontrol noktası tarihinden bu yana olayları izleyen bir düzen günlüğüne kaydedildiği anlamına gelir - düzenleme günlüğü son kez birleştirildiğinde. HDFS'de, düzenleme günlüğü, NameNode'da saklanan adlı bir dosyada saklanır.
NameNode başlatma ve çalışma
NameNode'un nasıl çalıştığını anlamak için, nasıl başlatıldığına bir göz atmanız yararlıdır. NameNode'un amacı, kaç tane veri bloğunun işleme konması gerektiğini ve depolandığı konumun tam olarak kaydedildiğini bildirmek olduğundan, mevcut tüm blok konumları ve bloktan dosyaya eşlemelere ihtiyaç duyar. VERİ DEPOSU.
Bunlar, NameNode'un attığı adımlardır. NameNode'un başlatılmasından sonra ihtiyaç duyduğu tüm bilgileri yüklemek için aşağıdakiler yapılır:
-
NameNode, dosyayı belleğe yükler.
-
NameNode dosyayı yükler ve zaten bellekte olan blok meta verilerini güncellemek için günlüğe kaydedilen değişiklikleri yeniden yürütür.
-
DataNode simgeleri, NameNode blok raporlarını gönderir.
Her bir bağımlı düğüm için orada saklanan tüm veri bloklarını listeleyen ve birinin her birinin sağlığını tanımlayan bir blok raporu var.
Başlatma işlemi tamamlandıktan sonra, NameNode, HDFS'de saklanan tüm verilerin tam bir resmini elde eder ve Hadoop istemcilerinden uygulama istekleri almaya hazırdır.
Veri dosyaları istemci isteklerine göre eklenip kaldırıldığı için değişiklikler köle düğümünün disk birimlerine yazılır, dosyaya günlük güncellemeleri yapılır ve değişiklikler NameNode'un belleğinde depolanan blok konumlarına ve meta verilere yansır.
Kümenin ömrü boyunca, DataNode cinleri her üç saniyede bir de NameNode sinyallerini gönderirler ve aktif olduğunu belirtir.(Bu varsayılan değer yapılandırılabilir.) Her altı saatte bir (tekrar yapılandırılabilir bir varsayılan), DataNodes, hangi dosya bloklarının düğümlerinde olduğunu açıklayan bir blok raporu olarak NameNode gönderir. Bu şekilde, NameNode'da daima kümedeki mevcut kaynakların geçerli bir görünümü vardır.
Veri yazma
HDFS'de yeni dosyalar oluşturmak için aşağıdaki işlem gerçekleşmelidir:
-
İstemci yeni bir dosya oluşturmak için NameNode'a bir istek gönderir.
NameNode, kaç blok gerektiğini belirler ve bu yeni dosya bloklarını kümede oluşturmak için istemciye bir kira verilir. Bu kiranın bir parçası olarak, müşterinin oluşturma görevini tamamlamak için bir süre sınırı vardır. (Bu süre sınırı, depolama alanının başarısız istemci uygulamaları tarafından ele geçirilmemesini sağlar.)
-
Sonra istemci, NameNode tarafından atanan kirayı kullanarak dosya bloklarının ilk kopyalarını köle düğümlerine yazar.
NameNode, yazma isteklerini işler ve kullanılabilirlik ile performans arasındaki dengeyi sağlayarak dosya bloklarının ve kopyalarının nerede yazılması gerektiğini belirler. Bir dosya bloğunun ilk kopyası bir rafa, ikinci ve üçüncü kopyalar ilk kopyadan farklı bir rafa, ancak aynı raftaki farklı bağımlı düğümlerde yazılır. Bu düzenleme, hiçbir veri bloğunun aynı arıza noktasında bulunduğundan emin olurken ağ trafiğini en aza indirir.
-
Her blok HDFS'ye yazıldığında, kalan N kopyalarını, NameNode tarafından tanımlanan diğer bağımlı düğümlere özel bir işlem yazar.
-
DataNode çekirdekleri, dosya bloğu çoğaltmaları oluşturulduğunu onayladıktan sonra, istemci uygulaması dosyayı kapatır ve ardından açık kiralamayı kapatan NameNode'u bildirir.
Okuma Verileri
HDFS dosyalarını okumak için aşağıdaki işlem gerçekleşmelidir:
-
İstemci, bir dosya için NameNode'a bir istek gönderir.
NameNode, blokların birbirine ve müşteriye olan en yakın erişim noktasına bağlı olarak en etkili erişim yoluna bağlı olarak hangi blokların katıldığını ve seçtiğini belirler.
-
Sonra müşteri, NameNode tarafından verilen adresleri kullanarak bloklara erişir.
Hadoop kümesindeki verileri dengelemek
Zaman içinde, (bazı köle düğümlerin kendilerine daha fazla veri yazdıkları durumlarda) eşit olmayan veri yutma düzenleri veya düğüm hataları kombinasyonlarıyla, verilerin raflar arasında eşit dağılmaması muhtemeldir ve Hadoop kümenizdeki bağımlı düğümler.
Bu eşitsiz dağılım, performans üzerinde zararlı bir etkiye neden olabilir, çünkü tek tek bağımlı düğümlere olan talep dengelenmeyecektir; az veri bulunan düğümler tamamen kullanılamaz; ve birçok bloklu düğümler aşırı kullanılır. Not: Aşırı kullanım ve düşük kullanım, CPU veya RAM'de değil, disk etkinliğine dayanmaktadır.
HDFS, fazla kullanılmış bağımlı düğümlerden gelen blokları, kullanılmayan nesnelere yeniden dağıtmak için bir dengeleyici yardımcı program içerir; farklı köle düğümleri ve raflardaki bloklar. Hadoop yöneticileri düzenli olarak HDFS sağlığını kontrol etmeli ve veriler eşit dağılmıyorsa, dengeleyici yardımcı programını çağırmalıdırlar.
NameNode ana sunucu tasarımı
Görev-kritik özelliği nedeniyle, NameNode daemonunu çalıştıran ana sunucu, bağımlı bir düğüm için olanlardan çok farklı donanım gereksinimlerine ihtiyaç duyar. En önemlisi, bir kesinti olasılığını en aza indirmek için kurumsal düzeydeki bileşenler kullanılmalıdır. Ayrıca, HDFS'de saklanan tüm veri blokları hakkında tüm meta verileri ve konum verilerini belleğe yüklemek için yeterli RAM'a ihtiyacınız olacaktır.