一種分布式文件系統(tǒng)的自適應壓縮方法及系統(tǒng)的制作方法
【技術(shù)領域】
[0001]本發(fā)明涉及分布式系統(tǒng)文件壓縮領域,特別涉及一種分布式文件系統(tǒng)的自適應壓縮方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著數(shù)據(jù)時代的到來,互聯(lián)網(wǎng)所處理的數(shù)據(jù)量日益增大,為了達到高可靠性,當前的分布式文件系統(tǒng)一般采用多副本的策略,在大規(guī)模機群中,這會帶來不可忽略的巨額存儲開銷,同時,對于分布式文件系統(tǒng)之上的系統(tǒng)或應用,如分布式數(shù)據(jù)庫、分布式數(shù)據(jù)倉庫、MapReduce框架或其它應用,也有可能會產(chǎn)生冗余數(shù)據(jù),這樣,會使得數(shù)據(jù)的膨脹率更高,I/O性能成為系統(tǒng)的瓶頸日益明顯,現(xiàn)有的分布式文件系統(tǒng)難以同時滿足高性能、高可靠性和低存儲開銷的需求。
[0003]通過對分布式文件系統(tǒng)上應用的類型進行分析可以知道,這些應用使用或產(chǎn)生的大部分數(shù)據(jù)是文本信息,特別是離線或在線分析系統(tǒng)中的數(shù)據(jù)基本都是文本,而文本本身是一種高度可壓縮的數(shù)據(jù),因此通過引入一種快速的數(shù)據(jù)壓縮方法,可以有效降低數(shù)據(jù)的存儲開銷,提尚磁盤和網(wǎng)絡i/o的有效帶寬,從而提尚應用的吞吐量。
[0004]對于分布式系統(tǒng)自帶的壓縮機制,只能在啟動時配置特定的某種壓縮算法,在系統(tǒng)運行過程中,cpu使用率,網(wǎng)絡帶寬實時動態(tài)變化,只是配置單一的壓縮算法無法達到最優(yōu)的系統(tǒng)吞吐量,并且對于某些已經(jīng)壓縮過的數(shù)據(jù)也進行壓縮,會使系統(tǒng)的吞吐量下降,在分布式文件系統(tǒng)中采用透明壓縮的有以下兩個,如下所示:
[0005]BlobSeer ,BlobSeer在文件系統(tǒng)層次對上層應用透明地壓縮文件,在寫入數(shù)據(jù)的時候?qū)γ總€文件塊進行壓縮,為了能適應不同的負載,在壓縮文件塊之前會提取部分數(shù)據(jù)進行抽樣壓縮以此來預測整個文件塊的壓縮比,從而判斷壓縮是否有益,實驗結(jié)果表明在分布式文件系統(tǒng)上實現(xiàn)透明壓縮能節(jié)省40%空間,但整體吞吐率有明顯下降,因為壓縮占用了過多的CPU資源,但是實驗結(jié)果并沒有揭示在不同的環(huán)境中(比如CPU、磁盤性能或網(wǎng)絡帶寬配置不同)壓縮算法對系統(tǒng)吞吐率的影響,而且僅測試了 LZO和BZIP2兩種壓縮算法,雖然可以配置不同的壓縮算法,卻不能自動選擇較優(yōu)的壓縮算法來適應不同的工作負載;
[0006]百度透明壓縮,百度的透明壓縮存儲在HDFS添加了三種角色:壓縮服務、調(diào)度器和塊訪問層,該項工作采用離線壓縮方式,壓縮服務會定時去向調(diào)度器請求任務,然后對文件塊進行壓縮,而命名空間節(jié)點(Namenode)對這個壓縮過程并不知情,該工作采用離線壓縮的優(yōu)點是實現(xiàn)簡單,能充分利用數(shù)據(jù)節(jié)點(Datanode)的計算能力,但數(shù)據(jù)在網(wǎng)絡中傳輸?shù)拈_銷并沒有變化,而本發(fā)明希望把數(shù)據(jù)壓縮轉(zhuǎn)移到客戶端,采用實時在線壓縮的方式,減少在網(wǎng)絡中傳輸?shù)臄?shù)據(jù)量,以此來提高系統(tǒng)的吞吐率。
[0007]自適應壓縮模型早已被發(fā)明用來加速數(shù)據(jù)的流動,其也可以被用來提高系統(tǒng)的吞吐量,現(xiàn)有的自適應壓縮模型主要有以下兩種:AdOC,AdOC(AdaptiveOnline Compress1n)是一種自適應實時數(shù)據(jù)壓縮算法,主要用于網(wǎng)絡傳輸場景,使用多線程的方法。一個線程用于壓縮數(shù)據(jù)塊,數(shù)據(jù)塊壓縮后放入發(fā)送隊列中,一個線程用于發(fā)送隊列中的數(shù)據(jù)塊,允許壓縮和網(wǎng)絡傳輸重疊。該算法根據(jù)發(fā)送隊列中的擁塞情況來實時調(diào)整壓縮等級,使壓縮效果能適應當前網(wǎng)絡和計算資源的變化。AdOC假設更高的壓縮等級能達到更好的壓縮效果,但對于冗余程度不高的數(shù)據(jù)來說,壓縮數(shù)據(jù)只會徒然增加壓縮的時間。并且這個工作只使用了 z I ib—種壓縮算法,通過調(diào)整壓縮等級來改變壓縮速度和壓縮比;
[0008]ACE,ACE(Adaptive Compress1n Environment)是一個自適應壓縮系統(tǒng),自動并透明地在傳輸過程中應用壓縮技術(shù)來提高網(wǎng)絡傳輸?shù)男阅?,與本文的工作很相似。ACE使用NWS(Network Weather Service)[Wolski98]來預測CPU和網(wǎng)絡性能,并配合其它的估計方法來預測32KB大小數(shù)據(jù)塊的壓縮、解壓縮和傳輸時間。ACE能根據(jù)數(shù)據(jù)的產(chǎn)生速度自動地在流水線模型和順序模型間切換,兩種模型都基于各自的策略來決定應用何種壓縮算法或不壓縮,ACE支持的壓縮算法有bzip、zlib和lzo。
[0009]通過對現(xiàn)有的透明壓縮機制和自適應壓縮模型的對比發(fā)現(xiàn),沒有一種自適應壓縮模型是在分布式文件系統(tǒng)中使用的,有的壓縮模型雖然可能可以適用于分布式文件系統(tǒng),但是借助第三方軟件獲得相關資源信息,系統(tǒng)負載重,而現(xiàn)有的在分布式文件系統(tǒng)中使用的透明壓縮機制,又不具備自動選擇最優(yōu)的壓縮算法的能力。
[0010]—發(fā)明提供了一種自適應數(shù)據(jù)壓縮和解壓縮的方法和系統(tǒng)及存儲裝置,該方法的步驟為:(I)壓縮:根據(jù)存儲系統(tǒng)設定的壓縮率目標、存儲控制器的負載情況為需要壓縮的數(shù)據(jù)段自適應選擇對應的數(shù)據(jù)壓縮算法、參數(shù)進行數(shù)據(jù)壓縮;(2)解壓縮:獲取需要解壓縮數(shù)據(jù)段的壓縮算法、參數(shù),并使用與所獲得的壓縮算法、參數(shù)對應的解壓縮算法為相應的數(shù)據(jù)段解壓縮。該系統(tǒng)為用來實施上述方法的系統(tǒng)。該存儲裝置包括存儲控制器和存儲介質(zhì),所述存儲控制器包括上述自適應數(shù)據(jù)壓縮和解壓縮系統(tǒng)。該發(fā)明能夠根據(jù)存儲系統(tǒng)預設壓縮率、存儲控制器負載情況,自適應選擇對應壓縮算法和壓縮參數(shù),既能滿足存儲系統(tǒng)的壓縮率要求又能減少存儲控制器負載,從而大大提高存儲系統(tǒng)性能,但該發(fā)明只能通過預設壓縮率的方式來選擇對應壓縮算法,而本發(fā)明方法和技術(shù)形成的系統(tǒng)可以根據(jù)計算場景和數(shù)據(jù)類型自主選擇最優(yōu)壓縮算法,最優(yōu)壓縮算法可能是壓縮率最高的算法,也可能是壓縮速率最高的壓縮算法。
【發(fā)明內(nèi)容】
[0011]針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種分布式文件系統(tǒng)的自適應壓縮方法及系統(tǒng)。
[0012]本發(fā)明提出一種分布式文件系統(tǒng)的自適應壓縮方法,包括:
[0013]步驟I,設置壓縮文件格式,形成壓縮數(shù)據(jù)流,所述壓縮數(shù)據(jù)流由頭部信息與多個數(shù)據(jù)塊組成,其中所述頭部信息用于判斷所述壓縮數(shù)據(jù)流是否已經(jīng)過壓縮;
[0014]步驟2,接收待壓縮文件,將所述待壓縮文件按照所述壓縮文件格式將所述待壓縮文件進行壓縮生成所述壓縮數(shù)據(jù)流;
[0015]步驟3,設置索引文件,其中所述索引文件由多個記錄組成,每條記錄維護所述壓縮數(shù)據(jù)流中數(shù)據(jù)的數(shù)據(jù)信息,所述索引文件用于快速定位所述壓縮數(shù)據(jù)流。
[0016]所述的分布式文件系統(tǒng)的自適應壓縮方法,所述數(shù)據(jù)信息包括所述待壓縮文件的位置、所述待壓縮文件在壓縮文件中的位置、所述待壓縮文件的大小。
[0017]所述的分布式文件系統(tǒng)的自適應壓縮方法,所述步驟3包括獲取客戶端的寫請求,所述分布式文件系統(tǒng)的命名空間節(jié)點告知所述待壓縮文件所在的數(shù)據(jù)節(jié)點,所述客戶端與數(shù)據(jù)節(jié)點通信,所述客戶端傳輸待壓縮數(shù)據(jù)給所述數(shù)據(jù)節(jié)點,通過自適應壓縮理論模型獲取最優(yōu)壓縮算法,選擇最優(yōu)壓縮算法后,將所述待壓縮數(shù)據(jù)進行壓縮,生成所述壓縮數(shù)據(jù)流,將所述壓縮數(shù)據(jù)流發(fā)送給所述數(shù)據(jù)節(jié)點。
[0018]所述的分布式文件系統(tǒng)的自適應壓縮方法,所述自適應壓縮理論模型為
[0019]|CRXR-TR|,CR>TR且R<0.8
[0020]R為各壓縮算法之間的壓縮比,CR為各壓縮算法之間的壓縮速率,TR數(shù)據(jù)傳輸速率。
[0021]所述的分布式文件系統(tǒng)的自適應壓縮方法,所述步驟3還包括獲取客戶端的讀請求,所述分布式文件系統(tǒng)的命名空間節(jié)點告知所述待壓縮文件所在的數(shù)據(jù)節(jié)點,所述客戶端與數(shù)據(jù)節(jié)點通信,所述數(shù)據(jù)節(jié)點傳輸所述壓縮數(shù)據(jù)流給所述客戶端,根據(jù)所述壓縮數(shù)據(jù)流的所述頭部信息,將所述壓縮數(shù)據(jù)流進行解壓縮,所述數(shù)據(jù)節(jié)點將解壓縮后的數(shù)據(jù)傳輸給所述客戶端。
[0022]本發(fā)明還提出一種分布式文件系統(tǒng)的自適應壓縮系統(tǒng),包括:
[0023]設置壓縮文件格式模塊,用于設置壓縮文件格式,形成壓縮數(shù)據(jù)流,所述壓縮數(shù)據(jù)流由頭部信息與多個數(shù)據(jù)塊組成,其中所述頭部信息用于判斷所述壓縮數(shù)據(jù)流是否已經(jīng)過壓縮;
[0024]壓縮模塊,用于接收待壓縮文件,將所述待壓縮文件按照所述壓縮文件格式將所述待壓縮文件進行壓縮生成所述壓縮數(shù)據(jù)流;
[0025]設置索引文件模塊,用于設置索引文件,其中所述索引文件由多個記錄組成,每條記錄