海量瓦片小文件歸檔和數據管理系統
2022-01-20 16:12:08
xinyong
39
海量瓦片小文件歸檔和數據管理系統

當今互聯網,數據呈現爆炸式增長,不光是社交網絡、移動通信、網絡視頻、電子商務等各種應用往往能產生億級甚至十億、百億級的海量小文件,就是在許多企業內部同樣會產生海量小文件,doc文件和excel文件等數百萬個文件的應用已經很容易就見到了。這些數據在復制和刪除過程中就會面臨訪問性能、存儲效率等許多方面巨大的挑戰,海量小文件問題成為了業界公認的難題。
具體表現舉例子 ,比如復制一個文件夾的時候開始的速度快,然后越來越慢,復制 500GB的數據 就要好幾個小時了,如果是10TB數據 則要2-3天,最要命的是中途一旦中斷了,不知道從哪里接續,即使中途沒有中斷,復制后的數據出錯的可能性依然存在。其他諸如刪除文件也是面臨同樣的問題。耗費時間巨大。
業界的一些知名互聯網公司,也對海量小文件提出了解決方案,例如:著名的社交網站Facebook,存儲了超過600億張圖片,專門推出了Haystack系統,針對海量小圖片進行定制優化的存儲。
Facebook的Haystack對小文件的解決辦法是合并小文件。將小文件數據依次追加到數據文件中,并且生成索引文件,通過索引來查找小文件在數據文件中的offset和size,對文件進行讀取。
Haystack面臨的問題:
Facebook的Haystack特點是將文件的完整key都加載到內存中,進行文件定位。機器內存足夠大的情況下,Facebook完整的8字節key可以全部加載到內存中。內存小的時候問題就來了。
我們目前針對海量小文件的數據管理問題,推出自己的解決方案,并將速度提升到100MB/s 的水平上來,更多詳細情況和測試報告。
這是我們的測試表現
海量小文件數據,文件大小為:469GB(610,969,669,456字節),
共有1371642個文件 和 2197個文件夾,
平均文件大小為445429.4字節 約等于435KB,
我們將這個文件夾上傳到服務器,測試上傳的速度如下:
平均速度:111MB/s
總耗時1小時27分鐘
平均速度:111MB/s
總耗時1小時27分鐘
下面是屏幕照片
完成100GB的瓦片文件上傳的時間約為11分鐘.實際使用中如果單詞文件夾體量在 100GB以內則感覺很好.
我們的下載速度更快,有多大的帶寬,就跑滿多大帶寬。