zstd茴晋,未來可期的數(shù)據(jù)壓縮算法

tl;dr(太長不讀):

  • zstd是Facebook在2016年開源的新無損壓縮算法呛每,優(yōu)點是壓縮率和壓縮/解壓縮性能都很突出。
  • 在我們測試的文本日志壓縮場景中乓诽,壓縮率比gzip提高一倍屎鳍,壓縮性能與lz4、snappy相當甚至更好问裕,是gzip的10倍以上逮壁。
  • zstd還有一個特別的功能,支持以訓(xùn)練方式生成字典文件粮宛,相比傳統(tǒng)壓縮方式能大大的提高小數(shù)據(jù)包的壓縮率窥淆。
  • 在過去的兩年里,Linux內(nèi)核巍杈、HTTP協(xié)議忧饭、以及一系列的大數(shù)據(jù)工具(包括Hadoop 3.0.0,HBase 2.0.0筷畦,Spark 2.3.0词裤,Kafka 2.1.0)等都已經(jīng)加入了對zstd的支持。
  • 可以預(yù)見鳖宾,zstd將是未來幾年里會被廣泛關(guān)注和應(yīng)用的壓縮算法吼砂。

最近了解到了zstd這種新的壓縮算法。不像lz4鼎文,lzo渔肩,snappy等近幾年流行的壓縮算法專注于壓縮和解壓縮性能,zstd在性能不錯的同時號稱壓縮率跟Deflate(zip/gzip的算法)相當拇惋。下面是官網(wǎng)列出的數(shù)據(jù):

zstd_official_performance.jpg

我們知道周偎,壓縮算法的效果和性能跟被壓縮的數(shù)據(jù)類型和模式有很大的關(guān)系,光看別人的測試數(shù)據(jù)撑帖、benchmark是不夠的蓉坎。正好有功能開發(fā)需要,于是結(jié)合我們的使用場景真實測試的一下胡嘿。

驚喜的是蛉艾,實測的結(jié)果比官方提供的還好,終于找到了我們的cup of tea。

測試環(huán)境

Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz, 8G內(nèi)存

CentOS 7.0

測試對象

對幾種支持流式寫入的壓縮算法伺通,使用對應(yīng)的命令行工具進行壓縮測試箍土。

壓縮算法 工具名稱 默認壓縮級別 版本 安裝方法
deflate gzip 5 1.5 centos自帶
snappy snzip n/a 1.0.4 https://github.com/kubo/snzip 編譯安裝
lz4 lz4 0 1.7.3 yum install lz4
lzo lzop 0 2.06 yum install lzop
zstd zstd 3 1.3.8 yum install zstd

除了snappy,各種壓縮算法/工具都支持設(shè)置壓縮級別罐监,高級別意味著以更長的壓縮時間換取更高的壓縮率吴藻。

測試輸入

100萬行不重復(fù)的某個應(yīng)用的日志文件,大小為977MB弓柱。

測試結(jié)果

大文件壓縮

zstd_test_result1.png

從上面可以看出:

  • 解壓時間各種算法差別不大
  • 壓縮時間(越小越好):lz4, zstd < lzo < snappy << gzip-1 < lz4-9 < gzip < gzip-9 < lzo-9
  • 壓縮率(越大越好):zstd-10 > zstd >> lz4-9 > gzip-9 > gzip, lzo-9 >> lz4, gzip-1 > snappy, lzo

zstd無論從處理時間還是壓縮率來看都占優(yōu)沟堡。snappy, lz4, lzo的壓縮率較低,但壓縮速度都很快矢空,而zstd甚至比這些算法更快航罗。Gzip的壓縮率比lz4等高不少,而zstd的壓縮率比gzip還提升一倍屁药。

如果從上面的比較還不是特別直觀的話粥血,我們再引入一個創(chuàng)造性的指標(從網(wǎng)上其他壓縮算法對比沒有見過使用這項指標):

壓縮效率 = 權(quán)重系數(shù) * 壓縮去掉的冗余數(shù)據(jù)大小 / 壓縮時間

代表單位處理時間可以壓縮去掉多少冗余數(shù)據(jù)。其中權(quán)重系數(shù)用來指定壓縮率和壓縮速度哪個更重要酿箭,這里我們認為在我們的使用場景里兩者同樣重要复亏,取系數(shù)為1。

zstd_test_result2.png

從這里我們可以明顯看出缭嫡,zstd > lz4 > lzo > snappy >> 其他缔御。

小數(shù)據(jù)量壓縮

對1000行、大小約為1MB的文件進行壓縮測試妇蛀,各種算法的壓縮率跟1GB大文件的壓縮率幾乎一樣耕突。

下面再對更小的數(shù)據(jù)量——10行日志數(shù)據(jù)的壓縮率進行對比。雖然我們的使用場景里沒有對小數(shù)據(jù)量的壓縮處理评架,但還是比較好奇zstd字典模式的效果眷茁。

zstd_test_result3.png

其中最后一組數(shù)據(jù)為zstd使用10000行日志進行訓(xùn)練生成字典文件,并利用字典文件輔助壓縮測試數(shù)據(jù)古程。

可以看出來蔼卡,除了zstd字典模式外,各種壓縮算法在處理更小的數(shù)據(jù)量時壓縮率都下降很多挣磨。而zstd字典模式對壓縮率帶來幫助非常明顯,與gzip對比荤懂,壓縮率從1000行時相差1倍茁裙,到10行時變?yōu)榱讼嗖罱咏?倍。

結(jié)論

  • 對大數(shù)據(jù)量的文本壓縮場景节仿,zstd是綜合考慮壓縮率和壓縮性能最優(yōu)的選擇晤锥,其次是lz4。
  • 對小數(shù)據(jù)量的壓縮場景,如果能使用zstd的字典方式矾瘾,壓縮效果更為突出女轿。
  • 綜上所述,zstd憑著優(yōu)異的特性壕翩,今后應(yīng)用將會越來越廣蛉迹,值得及早了解和嘗試。

下一篇文章將給大家對比這幾種算法的golang開源庫的性能和壓縮率放妈。敬請期待北救。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芜抒,隨后出現(xiàn)的幾起案子珍策,更是在濱河造成了極大的恐慌,老刑警劉巖宅倒,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攘宙,死亡現(xiàn)場離奇詭異,居然都是意外死亡拐迁,警方通過查閱死者的電腦和手機蹭劈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唠亚,“玉大人链方,你說我怎么就攤上這事≡钏眩” “怎么了祟蚀?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長割卖。 經(jīng)常有香客問我前酿,道長,這世上最難降的妖魔是什么鹏溯? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任罢维,我火速辦了婚禮,結(jié)果婚禮上丙挽,老公的妹妹穿的比我還像新娘肺孵。我一直安慰自己,他們只是感情好颜阐,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布平窘。 她就那樣靜靜地躺著,像睡著了一般凳怨。 火紅的嫁衣襯著肌膚如雪瑰艘。 梳的紋絲不亂的頭發(fā)上是鬼,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音紫新,去河邊找鬼均蜜。 笑死,一個胖子當著我的面吹牛芒率,可吹牛的內(nèi)容都是我干的囤耳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼敲董,長吁一口氣:“原來是場噩夢啊……” “哼紫皇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腋寨,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤聪铺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后萄窜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铃剔,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年查刻,在試婚紗的時候發(fā)現(xiàn)自己被綠了键兜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡穗泵,死狀恐怖普气,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佃延,我是刑警寧澤现诀,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站履肃,受9級特大地震影響仔沿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尺棋,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一封锉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膘螟,春花似錦成福、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脊阴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嘿期。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工品擎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人备徐。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓萄传,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜜猾。 傳聞我的和親對象是個殘疾皇子秀菱,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1 gzip壓縮 優(yōu)點:壓縮率比較高,而且壓縮/解壓速度也比較快蹭睡;hadoop本身支持衍菱,在應(yīng)用中處理gzip格式的...
    scottzcw閱讀 5,607評論 0 0
  • HADOOP與HDFS數(shù)據(jù)壓縮格式 1、cloudera 數(shù)據(jù)壓縮的一般準則 一般準則 是否壓縮數(shù)據(jù)以及使用何種壓...
    VentLam閱讀 7,838評論 0 8
  • Hadoop有一些數(shù)據(jù)I/O方面操作的工具肩豁,其中一些比Hadoop使用的都更普遍脊串。例如數(shù)據(jù)完整性和壓縮。但是當使用...
    單行線的旋律閱讀 623評論 0 2
  • 關(guān)鍵詞: 文件格式 壓縮效率 文件可分片 需要考慮的因素 文件格式對存儲空間利用率, 程序性能都有很大的影響. 具...
    海邊的貝殼林閱讀 4,489評論 0 8
  • 01 上天賜予我們每個人兩樣偉大的禮物:思想和時間。這句話祟昭,是《富爸爸窮爸爸》這本書里看到的缕坎,是對全書脈絡(luò)和中心思...
    筆尖兒愛寫作閱讀 667評論 0 3