HDFS的設計

當數據集的大小超過一臺獨立的物理計算機的存儲能力時,就有必要對它進行分區(partition)並存儲到若干臺單獨的計算機上。管理網絡中跨多臺計算機存儲的文件系統成爲分佈式文件系統(distributed filesystem)。該系統架構於網絡之上,勢必會引入網絡編程的複雜性,所以分佈式文件系統比普通磁盤文件系統更爲複雜。node

HDFS的設計

HDFS以流式數據訪問模式來存儲超大文件,運行於商用硬件集羣上。
1. 超大文件
超大文件在這裏指具備幾百MB、幾百GB甚至幾百TB大小的文件。
2. 流式數據訪問
HDFS的構建思路是這樣的:一次寫入,屢次讀取是最高效的訪問模式。數據集一般由數據源生成或從數據源複製而來,接着長時間在此數據集上進行各類分析。每次分析都將涉及該數據集的大部分數據甚至所有。
3. 商用硬件
Hadoop並不須要運行在昂貴且高可靠的硬件上。它是涉及運行在商用硬件的集羣上的,所以至少對於龐大的集羣來講,節點故障的概率仍是很是高的。HDFS遇到上述故障時,被設計成可以繼續運行且不讓用戶察覺到明顯的中斷
4. 低時間延遲的數據訪問
HDFS是爲高數據吞吐量應用優化的,因此要求低時間延遲數據訪問的應用,例如幾十毫秒範圍,不適合在HDFS上運行。目前,對於低延遲的訪問需求,HBase是更好的選擇
5. 大量的小文件
因爲namenode將文件系統的元數據存儲在內存中,所以該文件系統所能存儲的文件總數受限於namenode的內存容量。每一個文件、目錄和數據塊的存儲信息大約佔150字節。所以,若是有一百萬個文件,且每一個文件佔一個數據塊,那至少須要300MB的內存。
6. 多用戶寫入,任意修改文件
HDFS中的文件可能只有一個writer,並且寫操做老是將數據添加在文件的末尾。它不支持具備多個寫入者的操做,也不支持在文件的任意位置進行修改。編程

相關文章
相關標籤/搜索