HDFS的優勢:緩存
一、處理超大文件oop
這裏的超大文件一般是指百MB、甚至數百TB大小的文件。目前在實際應用中,HDFS已經能用來存儲管理PB級的數據了。性能
二、流式的訪問數據spa
HDFS的設計創建在「一次寫入、屢次讀寫」任務的基礎上。這意味着一個數據集一旦由數據源生成,就會被複制分發到不一樣的存儲節點中,而後響應各類各樣的數據分析任務請求。在多數狀況下,分析任務都會涉及數據集中的大部分數據,也就是說,對HDFS來講,請求讀取整個數據集要比讀取一條記錄更加高效。線程
三、運行於廉價的商用機器集羣上設計
Hadoop設計對應急需求比較低,只須運行在低廉的商用硬件集羣上,而無需在昂貴的高可用性機器上。廉價的商用機也就意味着大型集羣中出現節點故障狀況的機率很是高。HDFS遇到了上述故障時,被設計成可以繼續運行且不讓用戶察覺到明顯的中斷。orm
HDFS的缺點:內存
一、不適合低延遲數據訪問數據分析
若是要處理一些用戶要求時間比較短的低延遲應用請求,則HDFS不適合。HDFS是爲了處理大型數據集分析任務的,主要是爲達到高的數據吞吐量而設計的,這就可能要求以高延遲做爲代價。it
改進策略:
對於那些有低延時要求的應用程序,HBase是一個更好的選擇,經過上層數據管理項目儘量地彌補這個不足。在性能上有了很大的提高,它的口號是goes real time。使用緩存或多個master設計能夠下降Clinet的數據請求壓力,以減小延時。
二、沒法高效存儲大量的小文件
由於NameNode把文件系統的元數據放置在內存中,全部文件系統所能容納的文件數目是由NameNode的內存大小來決定。還有一個問題就是,由於MapTask的數量是由Splits來決定的,因此用MR處理大量的小文件時,就會產生過多的MapTask,線程管理開銷將會增長做業時間。當Hadoop處理不少小文件(文件大小小於HDFS中Block大小)的時候,因爲FileInputFormat不會對小文件進行劃分,因此每個小文件都會被當作一個Split並分配一個Map任務,致使效率底下。
例如:一個1G的文件,會被劃分紅16個64MB的Split,並分配16個Map任務處理,而10000個100Kb的文件會被10000個Map任務處理。
改進策略:
要想讓HDFS能處理好小文件,有很多方法。利用SequenceFile、MapFile、Har等方式歸檔小文件,這個方法的原理就是把小文件歸檔起來管理,HBase就是基於此的。
三、不支持多用戶寫入及任意修改文件
在HDFS的一個文件中只有一個寫入者,並且寫操做只能在文件末尾完成,即只能執行追加操做,目前HDFS還不支持多個用戶對同一文件的寫操做,以及在文件任意位置進行修改。
Name:Xr
Date:2014-02-22 21:28