HDFS avantajları
Yüksek hata toleransı
Birden çok veri kopyasını otomatik olarak kaydedin
Kopya kaybolduktan sonra otomatik olarak kurtar
Toplu işlem için uygun
Veri değil, mobil bilgi işlem
Bilgi işlem çerçevesine maruz kalan veri konumu
Büyük veri işlemeye uygun
GB, TB ve hatta petabaytlarca veri
Bir milyonun üzerindeki dosya sayısı
10K + düğüm ölçeği
Akış dosyası erişimi
Bir kez yazın, birden çok kez okuyun
Veri tutarlılığını sağlayın
Ucuz makinelere kurulabilir
Birden çok kopya ile güvenilirliği artırın
Hata toleransı ve kurtarma mekanizması sağlar
HDFS'nin dezavantajları aşağıdaki operasyon yöntemleri için uygun değildir:
Düşük gecikmeli veri erişimi
Milisaniye gibi
Düşük gecikme ve yüksek verim
Küçük dosya erişimi
NameNode'da çok fazla bellek kaplar
Arama süresi okuma süresini aşıyor
Eşzamanlı yazma, rastgele dosya değişikliği
Bir dosyanın yalnızca bir yazarı olabilir
Yalnızca eklemeyi destekler
HDFS, küçük dosyaları depolamak için uygun değildir
Meta bilgileri NameNode belleğinde saklanır
Bir düğümün belleği sınırlıdır
Çok sayıda küçük dosyaya erişim, çok fazla arama süresi tüketir
Çok sayıda küçük dosyayı kopyalamak ve aynı boyutta büyük bir dosyayı kopyalamak analoji
NameNode depolama bloklarının sayısı sınırlıdır
Bir blok meta bilgisi yaklaşık 150 bayt bellek tüketir
100 milyon blok depolamak için yaklaşık 20 GB bellek gereklidir
Bir dosyanın boyutu 10K ise, 100 milyon dosyanın boyutu yalnızca 1 TB'tır (ancak 20 GB NameNode belleği tüketir)
HDFS mimarisi
HDFS, tipik bir ana-bağımlı yapısı kullanır
HDFS tasarım fikirleri
hdfs mimarisi
Aktif İsim Kodu: Master (sadece bir)
HDFS ad alanını yönetin
Veri bloğu eşleme bilgilerini yönetin
Kopyalama politikasını yapılandırın
İstemci okuma ve yazma isteklerini işleme alın
Bekleme Namenodu: NameNode'un çalışırken beklemesi;
Düzenli olarak fsimage ve fsedit'leri birleştirin ve onları NameNode'a gönderin;
Active NameNode başarısız olduğunda, hızlı bir şekilde yeni Active NameNode'a geçin.
Datanode: Slave (birden fazla var)
Gerçek veri bloğunu saklayın
Veri bloğu okuma / yazma gerçekleştirin
İstemci: dosya segmentasyonu
Dosya konumu bilgilerini almak için NameNode ile etkileşim kurun;
DataNode ile etkileşim kurun, verileri okuyun veya yazın;
HDFS'yi yönetin;
HDFS'ye erişin.
HDFS veri bloğu (blok)
Dosya, sabit boyutlu veri bloklarına bölünmüştür
Varsayılan veri bloğu boyutu 64MB'dir, yapılandırılabilir
Dosya boyutu 64MB'den küçükse, ayrı bir blok olarak kaydedin.
Veri bloğu neden bu kadar büyük
Veri aktarım süresi arama süresini aşıyor (yüksek verim oranı)
Bir dosya depolama yöntemi
Boyuta göre birkaç bloğa bölün ve bunları farklı düğümlerde saklayın
Varsayılan olarak her bloğun üç kopyası vardır
HDFS yazma işlemi
HDFS okuma işlemi
HDFS'nin tipik fiziksel topolojisi
HDFS Blok kopya yerleştirme stratejisi
Kopya 1: Aynı istemci düğümünde
Kopya 2: Farklı raflardaki düğümlerde
Replica 3: İkinci replika ile aynı raftaki başka bir düğümde
Diğer kopyalar: rastgele seçilmiş
HDFS güvenilirlik stratejisi
HDFS erişim yöntemi
HDFS Shell komutu: linux komutuna çok benzer
HDFS Java API: org.apache.hadoop.fs, çok basit
HDFS REST API
HDFS Fuse: sigorta protokolünü uygular
HDFS lib hdfs: C / C ++ erişim arayüzü
HDFS programlama API'si diğer dillerde
Tasarruf kullanarak uygulama
C ++, Python, PHP, C # ve diğer dilleri destekleyin
HDFS2.0 yeni özellikler (henüz tam olarak uygulanmadı, dikkatli kullanın):
Adı Düğüm HA
İsim Düğüm Federasyonu
HDFS anlık görüntüsü (anlık görüntü)
HDFS önbelleği (bellek içi önbellek)
HDFS ACL
Heterojen Depolama hiyerarşisi
[1] Aşağıdaki yorumları takip ettikten sonra, özel olarak "veri" mesajı gönderin.
[2] Bazı materyallerin zaman sınırı vardır, acele edin!