隨着信息化建設的不斷深刻,企業級的信息管理平臺已經完成了從信息化建設到數據積累的職能轉變,在一些信息化起步較早、系統建設較規範的行業,如通訊、金融、大型生產製造等領域,海量數據的存儲、分析需求的迫切性日益明顯。java
以移動通訊運營商爲例,隨着移動業務和用戶規模的不斷擴大,天天都產生海量的業務、計費以及網管數據,然而龐大的數據量使得傳統的數據庫存儲已經沒法知足存儲和分析需求。主要面臨的問題包括:linux
理想的解決方案是把大數據存儲到分佈式文件系統中:數據庫
當前比較流行的分佈式文件系統包括:Lustre、HDFS、MogileFS、FastDFS、NFS等。緩存
Lustre是由SUN公司開發、在linux下運行的以C/C++開發的集羣並行文件系統,採用分佈式的鎖管理機制來實現併發控制,元數據和文件數據的通信鏈路分開。雖然在性能、可用性和擴展性上有一些優勢,但其缺點也一樣明顯:須要特殊設備的支持,並且分佈式的元數據服務器管理尚未實現。服務器
MogileFS是一個開源的分佈式文件系統,主要特色包括:應用層組件、無單點故障、自動文件複製、具備比RAID更好的可靠性、無需RAID nigukefs支持等,缺點包括:用Perl編寫,有依賴模塊的問題,安裝過程當中須要其餘庫和模塊的支持,對於不懂perl的人,安裝和使用很困難。MogileFS不支持對一個文件內部的隨機或順序讀寫,不支持視頻拖動,所以只適合作一部分應用,如圖片服務、靜態HTML服務等。另外,MogileFS過分依賴數據庫,包括它的高可用性也須要靠數據庫的HA實現,官方文檔也比較缺少,沒有詳細的使用說明。併發
FastDFS是一個專用的文件系統,和MogileFS比較相似,須要使用專門的API來訪問,不是通用的文件系統,不能mount成path的形式使用。只使用於一些特定的應用領域,好比網站存儲圖片、視頻文件等。負載均衡
NFS。優勢是:Linux直接在內核予以支持,使用方便,發展多年,比較成熟。缺點:可擴展性差,難以應用於大量存儲節點和客戶端的集羣式(cluster)系統;文件服務器的定位(location)對客戶端不透明,維護困難;緩存管理機制採用按期刷新機制,可能會產生文件不一致;不支持數據複製、負載均衡等分佈式文件系統的高級特性,很容易出現系統的性能瓶頸;另外,NFS服務器的更換須要系統暫停服務,對於異地服務的支持能力不夠。總的來講,NFS太老了,對於追求海量數據吞吐量、存在成千上萬個客戶端和存儲節點的互聯網應用來講有點力不從心。分佈式
HDFS是Hadoop的文件系統,其目的是嚮應用數據提供高吞吐量訪問的分佈式文件系統,是GFS的開源實現。
其最大的優勢包括:無需替換現有系統,而是利用該分佈式文件系統加強現有系統的處理能力。一方面,HDFS能夠從已有系統上接手海量數據的處理,使已有系統能夠專一於其設計目的,如實時交易數據處理、交互式商業智能,這些海量數據處理包括但不限於同步數據吞吐、處理、交換大規模數據等。另外一方面,HDFS能夠從任意多的數據源吞入任何類型的數據,來自多個數據源的數據能夠按任何須要的方式合併或聚合,從而實現任意單一系統沒法實現的深度分析。oop
HDFS不處理索引和關係,因此在HDFS中存儲數據時不用考慮未來如何分析這些數據。在和數據庫交互方面,HDFS支持JDBC,而大部分數據庫都支持數據的批量導入/導出。因此不管哪一種狀況,將整個數據庫中的數據常常性的或者以增量的方式導入到HDFS中很容易實現。大多數時候,HDFS能夠被設計爲存儲海量數據以及按須要向任意系統傳遞數據,數據能夠常常性地從關係型數據庫系統導入到HDFS中,通過這樣的調整,關係型數據庫能夠專門用來處理交互式任務,而複雜的分析工做就能夠按離線的方式交由HDFS來完成,對實施系統沒有任何影響。
綜上所述,海量數據比較理想的存儲方案是分佈式文件系統,而分佈式文件系統中,HDFS是比較理想的一款。性能