標籤:hadoop hdfs
HDFS是Hadoop Distributed Filesystem,HadoopDistributed File System。
當資料大到一台機器無法儲存時,就要把它分散到多台機器上去,通過網路管理多台電腦上的儲存空間的檔案系統,就稱為Distributed File System。網路程式的複雜性使得Distributed File System比普通的磁碟檔案系統複雜得多,例如其中最大的挑戰之一就是要容錯,要在其中一個或幾個節點死掉後,仍能保證資料完整。
HDFS是Hadoop的旗艦檔案系統,但是Hadoop還有一個抽象的檔案系統,用於整合其它檔案系統,例如本機存放區。
HDFS是為儲存非常大的檔案設計的檔案系統,適合於流式資料訪問,運行於普通商業電腦叢集。
“非常大的檔案”:指幾百MB,幾GB甚至幾TB的資料。Yahoo曾經在4000個節點上儲存上PB的資料。“流式資料訪問”:是指資料被寫入一次,然後被多次讀取並分析計算。而且每次計算都幾乎要用到檔案中的大部分資料,而不是只用其中的第一行資料。“普通商業電腦叢集”:是指Hadoop不要求運行於非常昂貴的可靠性很高的伺服器上,而是設計成運行於普通的電腦上。這就意味著節點是不可靠的,節點故障退出叢集是很正常的事。HDFS就是設計成在節點故障時,不讓使用者有明顯的感覺。
相對應的,HDFS也有其不適用的情境。“即時資料訪問”:HDFS不適合於即時系統。HDFS針對高吐吞量進行最佳化,對於處理大量資料有優勢,但不適合於那種在大量資料中處理一小部分,然後快速響應返回的系統。“大量小檔案”:檔案元資訊是儲存在namenode的記憶體裡的,100萬個檔案,元資訊將佔用namenode機器記憶體300M左右。因此,儘管幾百萬個檔案可以承受,但幾十億個檔案對於當前流行的硬體設定就吃不消了。“大量寫操作和檔案中間修改”:HDFS目前只支援單線程寫操作,並且只能在檔案尾寫。不支援修改檔案中的任意位置。(也許在以後的版本中會支援,但即使支援,也一定效率很差。)
Hadoop HDFS (1)