現在的**越做越大了,儲存的東西越來越多,如何解決這些檔案儲存也成了新的難題。如果把這些檔案都完全採用大硬碟儲存來解決,並不是乙個好主意,因為資料量越大風險就越高,雖然檔案能存得下,但是故障率相應會較高,另外重建耗費時間也比較長。所以最好的辦法是盡可能考慮分布式儲存,把檔案想辦法利用網路分散到多個機器上。
從我所了解的儲存結構來看,分布式儲存大致可以分為幾種:
1、類googlefs的分布式檔案系統
因為目前googlefs沒有開源,所以網上出現的分布式檔案系統都是利用google的方案自行實現的。這個方案的優點是可用性比較高,基本上基於硬碟的應用都可以處理,可用範圍就比較廣泛。我看了gfs、gfs2、ocfs2、fastdfs、mogilefs的一些相關介紹,大致有一些認識。
首先是文件比較少而出現的問題倒不少;然後是目前這些還沒有乙個能稱得上是穩定版本,如果有的話,估計也就是其中一些收費的版本。因為磁碟儲存乃是致關重要,所以目前建議還是不要輕易把這些東西部署到重要的地方。假如非常想使用的話,最好是做好充分測試,確保它的功能完全能夠滿足需要;然後還要想辦法在傳統的檔案系統中做好完全的備份,以免造成損失。
另外可以提的乙個東西是memcached,這個東西實現了記憶體的分布式共享,穩定度貌似比以上這些分布式檔案系統要穩定。不過是完全基於記憶體的,如果資料量不是很大,可以一試。
2、手工使用檔案路徑分散儲存
這個結構通常使用在web靜態檔案中,就以這種情形作為例子。
如果這些檔案數量比較大,可以通過分散檔案路徑,把某個檔案的訪問指定到特定的一台或幾台伺服器上。例如:
1)採用網域名稱的分散策略
例如使用a.***.com/b.***.com...來區分標記為a或b的一系列檔案,這些檔案儲存的時候,依然按照標記,存到a或b的伺服器上。這個策略將區分機器的任務交由dns伺服器來執行,擴容時會相應輕鬆。這需要web專案初期就規劃好這些東東,後期才轉用網域名稱策略的成本比較高甚至不可以實現。
2)採用目錄的分散策略
假如網域名稱初期並沒有規劃使用網域名稱策略,那麼可以採用**伺服器來進行目錄級的劃分。比如一般儲存大量檔案時,因為檔案系統的限制以及效率問題,都會按照一定規則劃分了很多級的目錄,按這些目錄拆分機器也並不是困難的事情。這種架構的問題在於**伺服器的效能和可靠性問題,需要在這點上稍下一點功夫。
以上這兩個方案,都要自行制定策略實現分散同步傳輸,傳輸一般可以歸納為推送和抓取兩種辦法,同步的話可以採用日誌同步(把要同步的資料記入日誌,通過日誌記錄來傳輸相應檔案)、比較同步(使用rsync等同步軟體)或即時同步(有新的修改就立刻傳輸);另外要實現單點故障剔除的話,首先找乙個策略把檔案儲存到多個節點上,例如,a.***.com或目錄a的檔案相應也存到b和c節點;然後在環境中使用故障剔除技術(lvs或nginx等),就可以解決問題,例如:採用網域名稱的話,可以採用lvs,缺點是使用的機器就會成倍增加;亦可再用一級**伺服器,缺點是會犧牲效能。採用目錄的話,因為本身就用到了**伺服器,所以只要儲存得當,實現比較容易。
來自:http://www.huohu666.cn/win/727.html
大量小檔案的優化策略
1 預設情況下 textinputformat對任務的切片機制是按檔案規劃切片,不管檔案多小,都會是乙個單獨的切片,都會交給乙個maptask,這樣如果有大量小檔案,就會產生大量的maptask,處理效率極其低下。2 優化策略 1 最好的辦法,在資料處理系統的最前端 預處理 採集 將小檔案先合併成大...
蘇志燮小檔案
2007 10 17 06 26 20 出生地 漢城 身高 182cm 體重 70kg 血型 b型 面相特點 濃眉單眼皮 特長 各種運動 喜歡的異性 美麗大方 溫柔誠實的女性 圈中好友 宋承憲 出道作品 模特 家中排行 一男一女 近視眼新藥可替代手術 警惕 打呼嚕危害生命 子宮肌瘤卵巢囊腫新突破 致...
小檔案問題
5.2 小檔案問題 小檔案是指檔案size小於hdfs上block大小的檔案。這樣的檔案會給hadoop的擴充套件性和效能帶來嚴重問題。首先,在hdfs中,任何block,檔案或者目錄在記憶體中均以物件的形式儲存,每個物件約佔150byte,如果有1000 0000個小檔案,每個檔案占用乙個bloc...