1. 程式人生 > >[置頂] Hadoop HDFS檔案儲存特點結構

[置頂] 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的系統結構

2e2cce75-5b1b-3061-9460-ac892c88d197.png

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是不可以再上傳後變更的。

轉自:
http://www.cnblogs.com/zhanghuijunjava/archive/2013/04/22/hadoop-block_hdfs.html


  • 2e2cce75-5b1b-3061-9460-ac892c88d197-thumb.png
  • 大小: 89.8 KB