HDFS學習筆記(一)——概述


1. HDFS產出的背景及定義

1.1 HDFS產生的背景

隨着數據量越來越大,在一個操作系統存不下所有的數據,那么就分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,迫切需要一種系統來管理多台機器上的文件,這就是分布式文件管理系統。HDFS只是分布式文件管理系統中的一種。

1.2 HDFS的定義

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

HDFS的使用場景:適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數據分析,並不適合用來做網盤應用。

 

2. HDFS的優缺點

2.1 優點:

1). 高容錯性

(1)數據自動保存多個副本,它通過增加數據副本的樣式,提高容錯性

     

(2)某一個數據副本丟失以后,它可以自動恢復

     

2) 適合處理大數據

(1)數據規模:能夠處理規模達到GB、TB、甚至PB的級的大數據 ;

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

2.2 缺點

1)不適合低時延的數據訪問;

2)無法高效的對大量小文件進行存儲:

(1)存儲大量小文件的話,它會占用NameNode大量的內存來存儲文件的目錄和塊信息;

(2)小文件的存儲的尋址時間超過了讀取時間,違反了HDFS的設計目標。

3)不支持並發的寫入、文件隨機修改

(1)一個文件只能有一個寫,不允許多個線程同時寫;

(2)僅支持數據的append(追加),不支持文件的隨機修改

 

3. HDFS的組成架構

3.1 整體架構圖如下:

       

3.2 HDFS架構詳解

1)NameNode(簡稱:ND):就是master,它是一個主管人員,負責管理HDFS的相關信息:

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

(2)管理副本的策略;

(3)管理數據塊(Block)的映射信息;

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

2)DataNode(簡稱:DN):就是slave,NameNode下達指令,DataNode執行實際的操作:

(1)存儲實際的數據塊;

(2)執行數據塊的讀/寫操作。

3)Client:客戶端,與NameNode交互的程序,職責或功能如下:

(1)文件切分:在上傳文件至HDFS的時候,Client會將文件分切成一個個的Block上傳;

(2)與NameNode交互,可以獲取文件的位置信息(存在哪個節點上)

(3)Client可以通過一些命令來訪問HDFS,比如增刪改查操作;

(4)Client通過一些命令來管理HDFS,比如將NameNode格式化。

4)SecondaryNameNode:並非是NameNode的熱備。當NameNode掛掉的時候,它並不會立即替換NameNode並提供服務。

(1)輔助NameNode,分擔其工作量,比如定期合並FsImage和Edits(后邊會講到,這里不用理解),並將合並后的FsImage.checkPoint推送給NameNode;

(2)在緊急情況下可以輔助恢復NameNode。

 

4 HDFS的文件塊大小

1)HDFS中的文件在物理上是按照塊(Block)存儲的,塊id大小可以通過配置參數(dfs.blocksize)來規定,默認大小在Hadoop2.x的版本中是128M,老版本的是64M。

2)塊的大小設定:文件的尋址時間應為塊文件的傳輸時間的1%,這是比較合理的設定。

3)思考:為什么塊的大小不能設置太小,也不能設置太大?

(1)HDFS的塊如果設置的太小,會增加尋址時間,程序長時間在尋找塊的存儲位置;

(2)如果設置太大,從磁盤傳輸的時間會明顯大於定位這個塊的起始位置所需的時間。導致在處理這個塊的數據時,浪費了大量的時間在IO上。

因此,塊的大小可以根據數據量和磁盤的IO速度決定如何設置。

 

5. 簡單粗暴的總結:

  • HDFS就是存文件的;

  • 把一份文件存在一台機器上不安全怎么辦?搞多台機器存多個副本,一個節點掛了,其他節點上的還能用;

  • 要存的文件太大讀寫慢怎么辦?把文件切成塊存儲,每塊的默認大小是128MB;

  • 那么多台機器怎么管理呢?定義存數據的機器就是DataNode,管理這些個DataNode的機器就是NameNode(它記錄了文件存儲的位置、文件的元數據以及使喚DataNode做存取操作)。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM