王菊 徐董冬
摘要:隨著電商企業(yè)、互聯(lián)網(wǎng)+、智慧城市等新商業(yè)革命的發(fā)展和社會(huì)網(wǎng)絡(luò)的廣泛應(yīng)用,帶動(dòng)相關(guān)信息的數(shù)據(jù)量極速增長(zhǎng),從大量的數(shù)據(jù)中搜索潛在的有效、全面的信息,預(yù)測(cè)未來的發(fā)展趨勢(shì)顯得十分必要。數(shù)據(jù)量越大挖掘到的價(jià)值就越多,進(jìn)而有助于支持決策。為了提高數(shù)據(jù)庫性能,改進(jìn)數(shù)據(jù)庫查詢效率的同時(shí)采用數(shù)據(jù)壓縮技術(shù)對(duì)數(shù)據(jù)進(jìn)行壓縮,減少文件所占存儲(chǔ)空間并保證在壓縮過程中不丟失信息。本文對(duì)Hadoop框架進(jìn)行介紹,并對(duì)基于Hadoop的數(shù)據(jù)壓縮技術(shù)進(jìn)行分析和研究,對(duì)壓縮算法進(jìn)行比較及使用場(chǎng)景。
關(guān)鍵詞:Hadoop 壓縮 壓縮算法
中圖分類號(hào):TP333 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)08-0094-02
近年來文本、聲音、圖像等各類信息數(shù)據(jù)量迅速增長(zhǎng),而人們對(duì)數(shù)據(jù)的研究往往關(guān)注于存儲(chǔ)效率、存儲(chǔ)量、安全性、完整性和帶寬等方面,產(chǎn)生的數(shù)據(jù)會(huì)有一定的冗余,而冗余數(shù)據(jù)也占用了磁盤空間和網(wǎng)絡(luò)帶寬,隨著數(shù)據(jù)量的增大,數(shù)據(jù)的存儲(chǔ)效率和存儲(chǔ)量受到限制,導(dǎo)致磁盤和帶寬利用率降低。信息技術(shù)的普及使產(chǎn)生的數(shù)據(jù)量持續(xù)增長(zhǎng),數(shù)據(jù)存儲(chǔ)的硬件管理愈加復(fù)雜,如果不對(duì)海量的數(shù)據(jù)進(jìn)行處理就難以高效、全面的應(yīng)用。對(duì)大數(shù)據(jù)的處理優(yōu)化方式有很多種,本文主要介紹在使用Hadoop平臺(tái)中對(duì)數(shù)據(jù)進(jìn)行壓縮處理來提高數(shù)據(jù)處理效率。
Hadoop作為比較通用的海量數(shù)據(jù)處理平臺(tái),提供了一些壓縮方法的支持,如果期間的輸出數(shù)據(jù)、中間數(shù)據(jù)能壓縮存儲(chǔ),對(duì)系統(tǒng)的I/O性能有所提升。在使用壓縮方面,主要考慮壓縮速度和壓縮文件的可分割性。Hadoop實(shí)現(xiàn)了HDFS分布式文件系統(tǒng)和MapReduce計(jì)算的核心框架,以一種可靠、高效、可伸縮的方式進(jìn)行數(shù)據(jù)處理。構(gòu)建在Hadoop系統(tǒng)之上的數(shù)據(jù)分析型應(yīng)用也越來越多,在數(shù)據(jù)分析型應(yīng)用中,數(shù)據(jù)壓縮減少了數(shù)據(jù)存儲(chǔ)量,進(jìn)而減少了查詢中的磁盤I/O量和網(wǎng)絡(luò)數(shù)據(jù)傳輸量。
1 Hadoop框架
Hadoop是一個(gè)開源分布式計(jì)算平臺(tái),能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。Hadoop是以一種高效、可靠、可伸縮的方式進(jìn)行處理的,它維護(hù)多個(gè)工作數(shù)據(jù)的副本確保能夠?qū)μ幚硎〉墓?jié)點(diǎn)重新分布;由于其以并行方式工作,通過并行處理加快處理速度;而且能夠處理PB級(jí)數(shù)據(jù)。此外,Hadoop依賴于社區(qū)服務(wù)器,成本較低。以Hadoop分布式文件系統(tǒng)HDFS和分布式計(jì)算框架MapReduce為核心。在分布式集群中,HDFS存取MapReduce需要的數(shù)據(jù),MapReduce負(fù)責(zé)調(diào)度與計(jì)算為用戶提供了底層細(xì)節(jié)透明的分布式基礎(chǔ)設(shè)施。
1.1 HDFS概述及體系架構(gòu)
HDFS是Hadoop分布式計(jì)算中數(shù)據(jù)存儲(chǔ)和管理的基礎(chǔ),一個(gè)具有高度容錯(cuò)性的分布式文件系統(tǒng),是基于流式數(shù)據(jù)訪問和處理超大文件的需求而開發(fā)的,可以部署在廉價(jià)的硬件設(shè)備上。適合存儲(chǔ)信息量非常大的文件,并且具備對(duì)數(shù)據(jù)讀寫的高吞吐量。但是由于Namenode內(nèi)存大小限制,不適合存儲(chǔ)大量小文件,而且HDFS不適于在數(shù)據(jù)需要經(jīng)常修改的情況。
Block:將一個(gè)文件進(jìn)行分塊,通常是64M。
NameNode:管理數(shù)據(jù)塊映射,處理客戶端的讀寫請(qǐng)求,配置副本策略,保存整個(gè)文件系統(tǒng)的目錄信息、文件信息及分塊信息。
SecondaryNameNode:分擔(dān)NameNode的工作量,保存對(duì)元數(shù)據(jù)信息的備份。
DataNode:分布在廉價(jià)的設(shè)備上,用于存儲(chǔ)數(shù)據(jù)塊,提供具體的數(shù)據(jù)存儲(chǔ)服務(wù),執(zhí)行數(shù)據(jù)塊的讀寫操作。
1.2 MapReduce概述及處理框架
MapReduce是一個(gè)從海量源數(shù)據(jù)提取分析元素并返回結(jié)果集的編程模型,可以進(jìn)行大量數(shù)據(jù)的計(jì)算任務(wù)可以被分解為多個(gè)子任務(wù),這些子任務(wù)相對(duì)獨(dú)立,相互之間不會(huì)有影響,可以并行處理,處理完這些子任務(wù)后,任務(wù)處理完成??山鉀Q海量數(shù)據(jù)的處理問題:如:Top K、頻率統(tǒng)計(jì)、倒排索引構(gòu)建(用于關(guān)鍵詞搜索)等問題。
2 壓縮算法介紹
Hadoop可自動(dòng)識(shí)別壓縮格式,壓縮文件有相應(yīng)的壓縮格式的擴(kuò)展名(如gz、bz2、lzo等),Hadoop會(huì)根據(jù)壓縮格式的擴(kuò)展名自動(dòng)選擇相對(duì)應(yīng)的解碼器來解壓數(shù)據(jù),該過程由Hadoop自動(dòng)處理。一般來說,根據(jù)應(yīng)用的具體情況來決定所使用的壓縮格式,如速度更快、空間最優(yōu)、壓縮比高等不同策略,通過具有代表性的數(shù)據(jù)集進(jìn)行測(cè)試,找到最佳方案。
Gzip壓縮(*.gz):Hadoop中內(nèi)置支持的一種壓縮方式,該壓縮方式在Linux的開發(fā)人員和管理員中使用的比較廣泛,壓縮比較高,壓縮/解壓速度較快。在應(yīng)用中處理Gzip格式的文件就和直接處理文本一樣。Gzip壓縮有一定的局限性,由于其算法本身的原因,無法對(duì)Gzip壓縮文件進(jìn)行分塊。
Bzip2壓縮(*.bz2):支持分塊,具有很高的壓縮率,Linux系統(tǒng)下自帶Bzip2命令。對(duì)于相同文件,壓縮后尺寸總小于Gzip的壓縮結(jié)果,但壓縮所用時(shí)間更長(zhǎng),也就是占用CUP使用率會(huì)更多,因此壓縮/解壓速度慢,不支持native,適合對(duì)速度要求不高但需要較高壓縮率的時(shí)候,可作為MapReduce作業(yè)的輸出格式,并對(duì)將來的使用頻率不高的數(shù)據(jù)進(jìn)行壓縮存檔。
LZO壓縮(*.lzo):基于Block分塊,一個(gè)大的文件(在Hadoop上可能會(huì)占用多個(gè)Block塊),就可以由多個(gè)MapReduce并行來進(jìn)行處理;壓縮/解壓速度快。LZO的壓縮比沒有Gzip高,不過由于其前2個(gè)特性,在Hadoop上使用LZO還是能整體提升集群的性能的,且能準(zhǔn)確還原壓縮后的數(shù)據(jù)。使用該壓縮需要在Hadoop集群中安裝LZO庫。
Hadoop帶有三種壓縮格式:Default、Gzip和Bzip2。Gzip是在Linux系統(tǒng)中經(jīng)常使用用的文件以節(jié)省磁盤空間,還可以和tar命令一起構(gòu)成Linux操作系統(tǒng)中比較流行的壓縮文件格式。Default和Gzip是對(duì)DEFLATE算法(LZ77和Huffman結(jié)合的算法)的實(shí)現(xiàn),對(duì)要壓縮的文件首先使用LZ77算法的一個(gè)變種進(jìn)行壓縮,對(duì)得到的結(jié)果在使用中Huffman編碼的方法進(jìn)行壓縮。Bzip2能夠高效的完成文件數(shù)據(jù)的壓縮,傳送文件前,可以先用Bzip2打包壓縮文件,以減少傳送時(shí)間,提高效率。LZO是一種實(shí)時(shí)無損壓縮算法,在保證實(shí)時(shí)壓縮速率的同時(shí)提供適中的壓縮率,Hadoop中的LZO不是自帶的,如果要支持LZO,需要另外安裝配置。
3 算法分析
數(shù)據(jù)壓縮的性能指標(biāo):壓縮/解壓速度、壓縮率、壓縮時(shí)間。壓縮率衡量壓縮空間的主要指標(biāo),而壓縮時(shí)間是衡量數(shù)據(jù)壓縮性能的一個(gè)重要指標(biāo)。對(duì)前文介紹的三種算法進(jìn)行測(cè)試分析,壓縮率=壓縮后數(shù)據(jù)大小/原始數(shù)據(jù)大小,壓縮速度=原始數(shù)據(jù)大小/壓縮時(shí)間。
在文件量和設(shè)備同等的條件下,Bzip2實(shí)現(xiàn)空間最優(yōu)壓縮,適合分布式存儲(chǔ)的應(yīng)用;LZO是最快速度壓縮,適合分布式計(jì)算的應(yīng)用;Gzip居于二者之間,所以根據(jù)不同的需求選擇不同的壓縮方式。
4 結(jié)語
本文簡(jiǎn)要介紹了當(dāng)前大數(shù)據(jù)的增長(zhǎng)趨勢(shì)及優(yōu)化數(shù)據(jù)存儲(chǔ)方面的主要措施,在大數(shù)據(jù)環(huán)境中,數(shù)據(jù)壓縮是改善處理性能的重要方式之一,壓縮能夠減少數(shù)據(jù)占用的存儲(chǔ)空間,進(jìn)而減少數(shù)據(jù)處理過程的I/O量。對(duì)Hadoop的核心模塊HDFS和MapReduce及其各自的運(yùn)行原理進(jìn)行研究,并對(duì)Hadoop常用的三種壓縮算法進(jìn)行研究,并通過測(cè)試、比較、分析,得出一個(gè)壓縮算法使用的通用策略。
參考文獻(xiàn)
[1]朱珠.基于Hadoop的海量數(shù)據(jù)處理模型研究和應(yīng)用[D].北京:北京郵電大學(xué),2008.
[2]崔杰,李陶深,蘭紅星.基于Hadoop的海量數(shù)據(jù)存儲(chǔ)平臺(tái)設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)研究與發(fā)展,2012,49(S1):12-18.
[3]古跟強(qiáng).云存儲(chǔ)中數(shù)據(jù)壓縮技術(shù)的研究[D].云南:云南大學(xué),2013.
[4]向麗輝,繆力,張大方.壓縮對(duì)Hadoop性能影響研究[J].計(jì)算機(jī)工程與科學(xué),2015,37(2):207-212.
[5]郝樹魁.Hadoop HDFS和MapReduce架構(gòu)淺析[J].郵電設(shè)計(jì)技術(shù),2012(7):37-42.
[6]李明,楊雷,黎山峰.不同壓縮算法性能的研究[J].通信技術(shù),2009,42(4):175-177.
[7]王意潔,孫偉東,周松.云計(jì)算環(huán)境下的分布存儲(chǔ)關(guān)鍵技術(shù)[J].軟件學(xué)報(bào),2012,23(4):962-986.
[8]翟巖龍,羅壯,楊凱.基于Hadoop 的高性能海量數(shù)據(jù)處理平臺(tái)研究[J].計(jì)算機(jī)科學(xué),2013,40(3)100-103.
[9]Amrita Upadhyay,Pratibha R. Balihalli.Deduplication and Compression Techniques in Cloud Design.IEEE International Systems Conference,2011.