hadoop的HDFS文件存儲


1:什么是HDFS?

HDFS適合做:

  1. 存儲大文件。上G、T甚至P。
  2. 一次寫入,多次讀取。並且每次作業都要讀取大部分的數據。
  3. 搭建在普通商業機群上就可以了。雖然會經常宕機,但HDFS有良好的容錯機制。

HDFS不適合做:

  1. 實時數據獲取。如果有這個需求可以用HBase。
  2. 很多小文件。因為namenode要存儲HDFS的metadata(比如目錄的樹狀結構,每個文件的文件名、ACL、長度、owner、文件內容存放的位置等等信息),所以HDFS上文件的數目受到namenode內存的限制。
  3. 並發環境下的寫入和修改。

hadoop中存儲文件以HDFS形式存儲,HDFS擁有自己的設計原則:

1:文件大小以block塊的形式存儲
2:每個塊至少分配到三台DataNode(看集群情況而定)
3:通過副本機制提高可靠度和吞吐量
4:hadoop1.0使用單一的master(NameNode)來協調存儲元數據(metadata)
5:最有意思的是hadoop設計者沒有設置客戶端緩存機制,因為我們對處理數據有足夠的信心。
下圖為HDFS的系統結構
        
        NameNode:主要存儲元數據:例如:文件名,拷貝幾份,分別備份到哪里;
過程大概如下:
client要向集群中寫入數據,首先詢問Master(NameNode),Master告知客戶端向哪些DataNode
寫入數據,在往DataNode寫入數據的同時,DataNode與NameNode保持心跳,如果DataNode在執行
任務失敗,NameNode會通過心跳機制得知DataNode死掉,將重新分配新的任務到其他的DataNode。
2:Block之副本放置策略
第一副本:放置在上傳文件DataNode,如果是集群外提交,由NameNode選擇一台磁盤不太滿,
  CPU不太忙的節點。
第二副本:放置在於第一副本不同的機架的節點上
第三副本:與第二個副本相同集群的節點
也許根據業務的需要我們需要更多地副本,其他副本隨機分配
   
3:Block的存儲形式
1:Block默認大小64M,如果上傳文件小於64M,那么仍然占用一個命名空間(NameNode metadata),
   但是物理存儲不會占用64M空間;(這也是hadoop為什么不太適合處理小數據的原因之一)
2:Block大小和副本數由Client端上傳文件到HDFS時設置,其中副本數可以變更,Block是不可以再上    傳后變更的
 
 
 
 
 
 
 


免責聲明!

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



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