1. 程式人生 > 實用技巧 >HDFS概述及其優缺點

HDFS概述及其優缺點

HDFS產生背景

隨著資料量越來越大,在一個作業系統存不下所有的資料,那麼就分配到更多的作業系統管理的磁碟中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的檔案,這就是分散式檔案管理系統。HDFS只是分散式檔案管理系統中的一種。

HDFS定義

HDFS(Hadoop Distributed File System),它是一個檔案系統,用於儲存檔案,通過目錄樹來定位檔案;其次,它是分散式的,由很多伺服器聯合起來實現其功能,叢集中的伺服器有各自的角色。

HDFS的使用場景:適合一次寫入,多次讀出的場景,且不支援檔案的修改。適合用來做資料分析,並不適合用來做網盤應用。

HDFS組成架構

1.NameNode(nn)

:就是Master,它是一個主管、管理者

(1)管理HDFS的名稱空間;

(2)配置副本策略;

(3)管理資料塊(Block)對映資訊;

(4)處理客戶端讀寫請求。

2.DataNode(dn):就是Slave。NameNode下達命令,DataNode執行實際的操作

(1)儲存實際的資料塊;

(2)執行資料塊的讀/寫操作。

優點

  1. 高容錯性

    (1)資料自動儲存多個副本。它通過增加副本的形式,提高容錯性。



    (2)某一個副本丟失以後,它可以自動恢復。



    2.適合處理大資料

    (1)資料規模:能夠處理資料規模達到GB、TB、甚至PB級別的資料。

    (2)檔案規模:能夠處理百萬規模以上的檔案數量,數量相當之大。

3.可構建在廉價機器上,通過多副本機制,提高可靠性。

缺點

  1. HDFS不支援對檔案的隨機寫

    可以append(追加),但是不能修改!

    原因: 檔案在HDFS上儲存時,以block為基本單位儲存!

    ①沒有提供對檔案的線上定址(開啟)功能

    ②檔案以塊形式儲存,修改了一個塊中的內容,就會影響當前塊之後所有的塊,效率低

  2. 不支援併發寫入,同一個檔案在同一時刻只能由一個客戶端寫入,不允許多個執行緒同時寫!

  3. 不適合低延時資料訪問,比如毫秒級的儲存資料,是做不到的。

  4. HDFS不適合(不高效)儲存小檔案

    根本原因: HDFS儲存了大量的小檔案,會降低NN的服務能力!

    NN負責檔案元資料(屬性,塊的對映)的管理,NN在執行時,必須將當前叢集中儲存所有檔案的元資料全部載入到記憶體!


    NN耗費大量記憶體! 而不能儲存可觀的資料。

     舉例: 當前執行NN的機器,有64G記憶體,除去系統開銷,分配給NN50G記憶體!
    
     檔案a (1k), 儲存到HDFS上,需要將a檔案的元資料儲存到NN,載入到記憶體
    包括:檔名 建立時間 所屬主 所屬組 許可權 修改時間+ 塊的對映(1塊)
    NN佔用記憶體:150B
    最多儲存50G/150B個檔案a
    儲存佔用磁碟空間:50G/150B * 1k 檔案b (128M), 儲存到HDFS上,需要將b檔案的元資料儲存到NN,載入到記憶體
    包括:檔名 建立時間 所屬主 所屬組 許可權 修改時間+塊的對映(1塊)
    NN佔用記憶體:150B
    最多儲存50G/150B個檔案b
    儲存佔用磁碟空間:50G/150B * 128M