hadoop---hdfs

hdfs

hdfs概念

block

類似於unix文件系統,hdfs也有block的概念,默認是128MB,但是和unix文件系統不同的是,1個1MB的文件,不會佔用一個block的全部大小,仍然只佔用1MB空間。

block的用途:

  1. 一個大文件會被分割爲多個block,這樣一個大文件如果在單機存儲不下,可以分割成小的block分若干臺機器存儲
  2. 每個block大小相同,存儲管理會簡單許多,可以很方便的估算出還剩多少磁盤空間,還能繼續存儲多少block等
  3. 每個block會額外複製2份,同一個機架一份,不同機架一份,用於冗餘備份和容災

Namenode和Datanode

Namenode:

  1. HDFS文件系統中的文件目錄樹,以及文件的數據塊索引,即每個文件對應的數據塊列表。目錄樹、元數據和數據塊的索引信息會持久化到物理存儲中,實現是保存在命名空間的鏡像fsimage和編輯日誌edits中。
  2. 數據塊和數據節點的對應關係,即某一塊數據塊保存在哪些數據節點的信息。存儲在內存中,由NameNode啓動後DataNode主動上報它所存儲的數據塊,動態建立對應關係。

Datanode:

  1. 客戶端(client)或者元數據信息(namenode)可以向數據節點請求寫入或者讀出數據塊。
  2. 其週期性的向元數據節點回報其存儲的數據塊信息。

secondary namenode:

  1. 從元數據節點並不是元數據節點出現問題時候的備用節點,它和元數據節點負責不同的事情。
  2. 其主要功能就是週期性將元數據節點的命名空間鏡像文件和修改日誌合併,以防日誌文件過大。合併過程見下圖所示。
  3. 合併過後的命名空間鏡像文件也在從元數據節點保存了一份,以防元數據節點失敗的時候,可以恢復。

Namenode的ha

hadoop2.x方案,兩個namenode,active-standby模式

  1. 共享存儲,保存edit log,當主namenode掛掉,備份namenode變爲active,從共享存儲中讀取edit log,構建namespace image,並讀入內存。共享內存選擇(NFS/QJM)
  2. datanode將file-block-datanode映射關係同時發給上述兩個namenode
  3. client必須能以用戶沒有感知的情況下,在主備namenode之間切換

參考:http://blog.csdn.net/anzhsoft/article/details/23279027



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章