回覆列表
-
1 # 悅悅聊科技
-
2 # 冷巷雨未停灬
一般常見的有以下幾種:
✧ gzip:壓縮率高,消耗CPU,壓縮解壓速度慢
✧ LZO:壓縮率居中,壓縮解壓速度較快
✧ Snappy:壓縮率低,壓縮解壓速度快
一般常見的有以下幾種:
✧ gzip:壓縮率高,消耗CPU,壓縮解壓速度慢
✧ LZO:壓縮率居中,壓縮解壓速度較快
✧ Snappy:壓縮率低,壓縮解壓速度快
1. 壓縮成為必須
對資料的3個關鍵特徵描述 3V:volume、variety和value。
volume,資料量與日俱增,在於智慧手機、Internet和感知器等的使用。
variety,大資料的資料格式,音訊、視訊、影象等。
value,資料近乎實時的產生以使得有用資訊能夠服務需要。
大資料不僅僅帶來了新的資料型別和儲存機制,也帶來了新種類的資料分析。現在資料增長太快了,資料的處理和管理成為一種挑戰,傳統的資料儲存和分析是低效的。在傳統資料和大資料之間存在不同,大資料面臨的挑戰包括資料的隱私和安全、資料儲存、從大資料中創造商業價值等。
伴隨大資料的增長,壓縮成為必然。壓縮的優勢在於:
壓縮的資料使用較少的頻寬。
壓縮的資料使用較少的磁碟。
加速資料在磁碟和網路上的傳輸。
降低成本。
2. hadoop中的壓縮型別
大資料包含複雜的、非結構化的資料,因此資料壓縮很重要,codec表示資料壓縮和解壓縮演算法的實現。一些壓縮格式是可分割的,這樣的壓縮對大檔案在效能上是較好的。hadoop支援的一般壓縮演算法如下:
LZO
Gzip
LZ4
Snappy
2.1 LZO
壓縮格式由大量小塊壓縮資料組成,塊大小對壓縮和解壓資料是一樣的。它的壓縮和解壓縮速度是很快的而且是可分割的,LZO是一個用ANSI C編寫的很少丟失資料的壓縮庫。它的原始碼和壓縮資料格式使得它在平臺之間遷移是非常便攜的。LZO的特徵如下:
資料壓縮類似於其他普遍的壓縮技術,比如gzip、bzip
能夠非常快速的解壓縮
除去源和目的buffer外,解壓縮不需要額外的記憶體
對產生的預壓縮資料有多種壓縮level,因此帶來了有競爭力的壓縮比
還有一種壓縮level僅僅為8KB資料壓縮
演算法是執行緒安全的
演算法是資料無損的
LZO是便攜的
Lzop是使用LZO作為壓縮服務的檔案壓縮器,它是最快的壓縮和加壓縮器。
2.2 GZIP
GUN zip,基於DEFLATE演算法,LZ77和Huffman編碼的結合。它比LZO壓縮效能好但是慢。如果原生hadoop lib在CLASSPATH中不可用,那麼java將使用java自身的GZIP。
它在檔案中尋找相似的字串,臨時的替換這些字串以使得檔案變小,第二個字串用前一個字串的指標替換,形為(distance,length)。文字和匹配長度以Huffman樹壓縮,而匹配距離以另一棵樹壓縮,這些樹在每一塊的塊首以緊湊的格式儲存。
deflate是壓縮演算法而inflate是解壓縮演算法,Gzip檔案的字尾為.gz,各種可用的格式如下:
tar
shar
zip
tar.gz
tar.z
一種自由、可用的、高質量資料壓縮器。壓縮率一般在10%~15%,壓縮的資料塊大小在100~900KB。Bzip2的效能是不對稱的,解壓快。它支援儲存媒介錯誤有限恢復,如果你試圖從備份的磁帶或者磁碟中修復資料且資料存在錯誤,bzip2依然能夠解壓檔案的這些部分如果硬體沒有收到損害。它也是便攜的,以塊來壓縮大檔案,塊的大小影響壓縮率和壓縮、解壓縮需要的記憶體。
2.4 LZ4
無丟失資料的壓縮演算法,強調壓縮解壓縮速度,壓縮速度為每core 400MB/S~GB/s
Token為1位元組的值,Field為Literal長度,其值為0 則沒有後面的Literal,其值為15則更多地Byte被新增,每一額外欄位代表0~255之間的一個數字以計算總長。Literals為未壓縮的文字,Offset代表匹配副本的位置,1 意味著當前位置-1 欄位,最大值為65535 。
2.5 Snappy
非常高速、合理的壓縮器。
3 總結
gzip是普通的壓縮器,bzip壓縮效能好於gzip但速度慢,LZO由很多小塊組成。
LZO和Snappy的壓縮速度好但壓縮效率低,解壓是gzip的兩倍。Snappy解壓縮好於LZO
Compresssion formatToolAlgorithmFile extentionSplitable
GzipgzipDEFLATE.gzNo
bzip2bzip2bzip2.bz2Yes
LZOlzopLZO.lzoYes if indexed
SnappyN/ASnappy.snappyNo