余思,桂小林,黃汝維,等
目的:在各種存儲系統中存在大量的小文件,小文件的存儲效率會直接影響整個存儲系統的存儲效率和存儲能力。基于Hadoop分布式文件系統(HDFS)的云存儲系統由于采用了主從式架構模型而帶來了小文件存儲效率低的問題。已有的解決基于HDFS的存儲系統中小文件存儲效率的文件合并或組合方法沒有考慮系統的負載狀況以及確定小文件合并的最優規模。本文采用多屬性決策理論和實驗得出小文件合并的最優規模、基于層次分析法(AHP)的系統負載預測算法實現了系統的負載均衡,在不影響存儲系統運行狀況的基礎上,提高了小文件的存儲效率。方法:本文提出的面向HDFS的云存儲中小文件存儲效率的優化方案,首先利用HDFS提供的序列文件(Sequence File)技術將小文件合并為大文件,以小文件的索引號為key,內容為 value的形式進行合并,同時實現了基于數據塊的壓縮,從而在節省名稱節點內存空間的同時也節省了數據節點的磁盤空間;其次利用多維屬性決策理論,綜合讀文件時間、合并文件時間及節省內存空間大小等指標,計算出合并小文件的最優方式,能夠在時間消耗和內存空間節省之間取得平衡。為了提高對小文件的處理效率,系統為每個用戶建立了3種隊列:(1)序列文件隊列(SFQ);(2)序列文件操作隊列(SFOQ);(3)備用隊列(BQ)。其中,SFQ用于小文件的合并,SFOQ用于對合并后小文件的操作,BQ用于操作的小文件數超過SFQ或SFOQ長度的情況。3種隊列的長度一致,可通過實驗得出隊列長度的最優值;最后利用基于層次分析法(AHP)的系統負載預測算法獲取系統屬性的歷史信息,依據系統屬性重要性將每個時刻的系統負載屬性值經過 AHP分析融合為單一的決策屬性值,然后依據決策屬性值的時間重要性經過第 2次 AHP分析最終得到下一時刻的系統負載值,從而最終得到系統負載的預測值,實現了良好的負載均衡。結果:實驗結果反映出系統性能決策值的大小隨著 SFQ長度的增大呈現一種類似開口向上的拋物線狀變化,并且在 SFQ長度為 400時取得最小值,系統性能達到了最優。同時,小文件合并的規模越大,名稱節點消耗的內存空間將越少,與此同時,對小文件的操作(如讀取、刪除等)以及合并文件所花費的時間代價也將越大。在其他基于HDFS的存儲系統中采用本文的方案進行分析和部署,都可在時間損耗和內存利用率提高之間實現一種最優平衡,實現了小文件存儲效率提高的同時不影響系統性能的目標。結論:針對基于HDFS的云存儲系統中小文件存儲效率不高的問題提出了一個面向HDFS的云存儲中小文件存儲效率的優化方案。該方案采用Sequence File技術將小文件以隊列的形式合并為大文件,從而實現了節省名稱節點內存空間的目的,同時也實現了對合并之后的小文件的透明操作。確定影響隊列長度的指標后,通過試驗獲取指標值,采用數據標準化方法和三標度層次分析法確定隊列長度的最優值,使得小文件的合并能在合并時間、文件操作時間和節省內存空間之間達到一種平衡;基于負載均衡的目的,設計了基于 AHP的負載預測算法對系統負載進行預測,在不影響存儲系統運行狀況的基礎上,提高了小文件的存儲效率。
來源出版物:西安交通大學學報, 2011, 45(6): 59-63
入選年份:2015