一種提高雲存儲中小檔存儲效率的方案

來源:互聯網
上載者:User
針對基於HDFS的雲存儲系統中小檔存儲效率不高的問題,採用序列檔技術設計了一個雲存儲系統中小檔的處理方案。 該方案利用多維屬性決策理論,綜合讀檔時間、合併檔時間及節省記憶體空間大小等指標,得出合併小檔的最優方式,能夠在消耗的時間和節省的記憶體空間之間取得平衡;設計基於層次分析法的系統負載預測演算法對系統負載進行預測, 從而實現負載均衡的目的;利用序列檔技術對小檔進行合併。

實驗結果表明,在不影響存儲系統運行狀況的基礎上,該方案提高了HDFS(Hadoop distributed file system)是一種具有高度容錯性質的分散式檔案系統模型,可以部署在支援JAVA運行環境的普通機器或虛擬機器上 ,能夠提供高輸送量的資料訪問,非常適合部署雲存儲平臺。

HDFS採用主從式架構設計模式(master/slavearchitecture),一個名稱節點(NameNode)和若干資料節點(DataNode)構成HDFS集群。 HDFS的這種單名稱節點的設計極大地簡化了檔案系統的結構,然而也因此引發了HDFS的小檔存儲效率低的問題。 因為HDFS中的每個目錄和檔的中繼資料資訊都存放在名稱節點的記憶體中,如果系統中存在大量的小檔(指那些比HDFS資料塊(預設為64MB)d,得多的檔),則無疑會降低整個存儲系統的存儲效率和存儲能力。

在各種存儲系統中,存在大量這樣的小檔。 美國西北太平洋國家實驗室2007年的一份研究報告表明,他們系統中有1 200萬個檔,其中94%的檔小於64 MB,58%的小於64 kB。 在一些具體的科研計算環境中,也存在大量的小檔,例如,在某些生物學計算中可能會產生3 000萬個檔,而其平均大小只有190 kB。

解決基於HDFS的存儲系統中小檔存儲效率問題的主流思想是將小檔合併或組合為大檔,目前主要的方法分為2種,一種是利用Hadoop歸檔(Hadoop archive,HAR)等技術實現小檔合併的方法, 另一種則是針對具體的應用而提出的檔組合方法。

Mackey等利用HAR技術實現小檔的合併,從而提高了HDFS中中繼資料的存儲效率。 Liu等結合WebGIS應用,以Hadoop為存儲平臺開發了HDWebGIS原型系統;結合WebGIS訪問模式的特點,將小檔組合為大檔並為其建立全域索引,從而提高了小檔存儲效率。 Dong等[4]針對BlueSky系統中PPT課件的存儲問題,提出了將小檔合併到大檔中並結合預取機制來提高系統存儲和訪問小檔的效率的方法。 劉立坤等對分散式存儲系統中小檔的併發訪問進行了優化。

以上的研究工作都是基於檔的合併或組合來解決小檔存儲效率不高的問題,然而還存在以下2個問題:第一,作為一個完整的系統,在提高小檔存儲效率的同時,也應該考慮到系統的負載狀況,因為不管是檔合併還是檔組合, 對HDFS而言都是一個額外的操作;第二,未對小檔合併規模進行研究,即尚未確定多少個小檔合併為一個大檔可以使系統性能達到最優。

基於以上兩點,本文提出了一個面向HDFS的雲存儲系統中小檔存儲效率的優化方案:採用序列檔技術將小檔合併為大檔,結合多屬性決策理論和實驗得出合併檔的最優方式,通過基於層次分析法(analytic hierarchy process,AHP)的系統負載預測演算法實現系統的負載均衡。

1 小檔存儲效率優化方案設計

在構建的雲存儲系統中,採用多叉樹的結構來構建檔索引。 使用者將檔上傳到雲存儲系統後,系統會自動根據使用者檔的組織形式建立對應的多叉樹索引。

1. 1序列檔合併技術

序列檔(SequenceFile)是HDFS提供的一種二進位檔案技術,這種二進位檔案直接將對序列化到檔,檔序列化時可實現基於記錄或資料塊的壓縮。 在雲存儲系統中,對二進位檔案採用SequenceFile技術將小檔合併為大檔,以小檔的索引號為key、內容為value的形式進行合併,合併的同時實現基於資料塊的壓縮,這樣, 在節省名稱節點記憶體空間的同時也節省了資料節點的磁碟空間。

1. 2小檔存儲效率優化方案

在基於HDFS的雲存儲系統中,小檔存儲效率優化方案如圖1所示。 為提高對小檔的處理效率,系統為每個使用者建立了3種佇列:第1種為序列檔佇列(SequenceFile queue,SFQ),第2種為序列檔操作佇列(SequenceFile operation queue,SFOQ), 第3種為備用佇列(Backup queue,BQ)。 其中,SFQ用於小檔的合併,SFOQ用於對合併後小檔的操作,BQ用於操作的小檔數超過SFQ或SFOQ長度的情況。 3種佇列的長度一致,可通過實驗得出佇列長度的最優值。 下面介紹具體的處理流程。

圖1 小檔存儲效率優化方案

如圖1所示,使用者將本地的檔上傳至雲存儲伺服器(過程1),然後伺服器開始對該檔的類型進行判斷(過程2),如果是小檔,將該檔的索引號放入SFQ中(過程3)。 當SFQ滿時,將發送「佇列滿」信號(QF)給控制器,如圖中虛線口所示,而當計時器到定時點時,將發送「時間到」信號(TU)給控制器,如虛線b所示。 接收到QF或者TU信號後,控制器開始讀取SFQ的相關資訊(過程4. 1),對系統負載進行計算(過程4. 2)(具體演算法在第2節仲介紹),並據此決定是否進行小檔的合併(過程5)。 檔合併後完成小檔與大檔之間的映射(過程6)控制器的具體處理邏輯如圖2所示。

當控制器接收到信號時,首先判斷信號類型,如果是QF,則調用基於AHP的系統負載預測演算法計算系統負載。 如果得到的系統負載低於系統設定的閾值,則開始合併檔(包括SFQ和BQ),並取消系統中的TU信號;如果系統負載大於系統設定的閾值,則進一步判斷BQ的數量,若BQ數量小於某個值(例如3),則新建BQ, 將SFQ轉移到BQ中並推遲合併作業(系統中設定推遲的時間為30 min),設定TU信號,若BQ數量大於3,則將BQ中的小檔進行合併,取消系統中的TU信號。

1234下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.