Hadoop數(shù)據(jù)壓縮

4.1 概述

壓縮技術(shù)能夠有效減少底層存儲(chǔ)系統(tǒng)(HDFS)讀寫字節(jié)數(shù)。壓縮提高了網(wǎng)絡(luò)帶寬和磁盤空間的效率驶乾。在Hadoop下爬凑,尤其是數(shù)據(jù)規(guī)模很大和工作負(fù)載密集的情況下,使用數(shù)據(jù)壓縮顯得非常重要伊约。在這種情況下,I/O操作和網(wǎng)絡(luò)數(shù)據(jù)傳輸要花大量的時(shí)間孕蝉。還有屡律,Shuffle與Merge過程同樣也面臨著巨大的I/O壓力。

鑒于磁盤I/O和網(wǎng)絡(luò)帶寬是Hadoop的寶貴資源降淮,數(shù)據(jù)壓縮對(duì)于節(jié)省資源超埋、最小化磁盤I/O和網(wǎng)絡(luò)傳輸非常有幫助。不過佳鳖,盡管壓縮與解壓操作的CPU開銷不高霍殴,其性能的提升和資源的節(jié)省并非沒有代價(jià)。

如果磁盤I/O和網(wǎng)絡(luò)帶寬影響了MapReduce作業(yè)性能系吩,在任意MapReduce階段啟用壓縮都可以改善端到端處理時(shí)間并減少I/O和網(wǎng)絡(luò)流量来庭。

壓縮Mapreduce的一種優(yōu)化策略:通過壓縮編碼對(duì)Mapper或者Reducer的輸出進(jìn)行壓縮,以減少磁盤IO穿挨,提高M(jìn)R程序運(yùn)行速度(但相應(yīng)增加了cpu運(yùn)算負(fù)擔(dān))月弛。

注意:壓縮特性運(yùn)用得當(dāng)能提高性能,但運(yùn)用不當(dāng)也可能降低性能絮蒿。

基本原則:

(1)運(yùn)算密集型的job尊搬,少用壓縮

(2)IO密集型的job,多用壓縮

4.2 MR支持的壓縮編碼

壓縮格式 hadoop自帶土涝? 算法 文件擴(kuò)展名 是否可切分 換成壓縮格式后,原來的程序是否需要修改
DEFAULT 是,直接使用 DEFAULT .deflate 和文本處理一樣幌墓,不需要修改
Gzip 是但壮,直接使用 DEFAULT .gz 和文本處理一樣冀泻,不需要修改
bzip2 是,直接使用 bzip2 .bz2 和文本處理一樣蜡饵,不需要修改
LZO 否弹渔,需要安裝 LZO .lzo 需要建索引,還需要指定輸入格式
Snappy 否溯祸,需要安裝 Snappy .snappy 和文本處理一樣肢专,不需要修改

為了支持多種壓縮/解壓縮算法,Hadoop引入了編碼/解碼器焦辅,如下表所示

壓縮格式 對(duì)應(yīng)的編碼/解碼器
DEFLAT Eorg.apache.hadoop.io.compress.DefaultCodec
gzip org.apache.hadoop.io.compress.GzipCodec
bzip2 org.apache.hadoop.io.compress.BZip2Codec
LZO com.hadoop.compression.lzo.LzopCodec
Snappy org.apache.hadoop.io.compress.SnappyCodec

壓縮性能的比較

壓縮算法 原始文件大小 壓縮文件大小 壓縮速度 解壓速度
gzip 8.3GB 1.8GB 17.5MB/s 58MB/s
bzip 28.3GB 1.1GB 2.4MB/s 9.5MB/s
LZO 8.3GB 2.9GB 49.3MB/s 74.6MB/s

http://google.github.io/snappy/

On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more.

4.3 壓縮方式選擇

4.3.1 Gzip壓縮

優(yōu)點(diǎn):壓縮率比較高博杖,而且壓縮/解壓速度也比較快;hadoop本身支持筷登,在應(yīng)用中處理gzip格式的文件就和直接處理文本一樣剃根;大部分linux系統(tǒng)都自帶gzip命令,使用方便前方。

缺點(diǎn):不支持split狈醉。

應(yīng)用場(chǎng)景:當(dāng)每個(gè)文件壓縮之后在130M以內(nèi)的(1個(gè)塊大小內(nèi)),都可以考慮用gzip壓縮格式惠险。例如說一天或者一個(gè)小時(shí)的日志壓縮成一個(gè)gzip文件苗傅,運(yùn)行mapreduce程序的時(shí)候通過多個(gè)gzip文件達(dá)到并發(fā)。hive程序班巩,streaming程序金吗,和java寫的mapreduce程序完全和文本處理一樣,壓縮之后原來的程序不需要做任何修改趣竣。

4.3.2 Bzip2壓縮

優(yōu)點(diǎn):支持split摇庙;具有很高的壓縮率,比gzip壓縮率都高遥缕;hadoop本身支持卫袒,但不支持native(java和c互操作的API接口);在linux系統(tǒng)下自帶bzip2命令单匣,使用方便夕凝。

缺點(diǎn):壓縮/解壓速度慢;不支持native户秤。

應(yīng)用場(chǎng)景:適合對(duì)速度要求不高码秉,但需要較高的壓縮率的時(shí)候,可以作為mapreduce作業(yè)的輸出格式鸡号;或者輸出之后的數(shù)據(jù)比較大转砖,處理之后的數(shù)據(jù)需要壓縮存檔減少磁盤空間并且以后數(shù)據(jù)用得比較少的情況;或者對(duì)單個(gè)很大的文本文件想壓縮減少存儲(chǔ)空間,同時(shí)又需要支持split府蔗,而且兼容之前的應(yīng)用程序(即應(yīng)用程序不需要修改)的情況晋控。

4.3.3 Lzo壓縮

優(yōu)點(diǎn):壓縮/解壓速度也比較快,合理的壓縮率姓赤;支持split赡译,是hadoop中最流行的壓縮格式;可以在linux系統(tǒng)下安裝lzop命令不铆,使用方便蝌焚。

缺點(diǎn):壓縮率比gzip要低一些;hadoop本身不支持誓斥,需要安裝只洒;在應(yīng)用中對(duì)lzo格式的文件需要做一些特殊處理(為了支持split需要建索引,還需要指定inputformat為lzo格式)岖食。

應(yīng)用場(chǎng)景:一個(gè)很大的文本文件红碑,壓縮之后還大于200M以上的可以考慮,而且單個(gè)文件越大泡垃,lzo優(yōu)點(diǎn)越越明顯析珊。

4.3.4 Snappy壓縮

優(yōu)點(diǎn):高速壓縮速度和合理的壓縮率。

缺點(diǎn):不支持split蔑穴;壓縮率比gzip要低忠寻;hadoop本身不支持,需要安裝存和;

應(yīng)用場(chǎng)景:當(dāng)Mapreduce作業(yè)的Map輸出的數(shù)據(jù)比較大的時(shí)候奕剃,作為Map到Reduce的中間數(shù)據(jù)的壓縮格式;或者作為一個(gè)Mapreduce作業(yè)的輸出和另外一個(gè)Mapreduce作業(yè)的輸入捐腿。

4.4 壓縮位置選擇

壓縮可以在MapReduce作用的任意階段啟用纵朋。

4.5 壓縮配置參數(shù)

要在Hadoop中啟用壓縮,可以配置如下參數(shù):

參數(shù) 默認(rèn)值 階段 建議
io.compression.codecs(在core-site.xml中配置) org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec 輸入壓縮 Hadoop使用文件擴(kuò)展名判斷是否支持某種編解碼器
mapreduce.map.output.compress(在mapred-site.xml中配置) false mapper輸出 這個(gè)參數(shù)設(shè)為true啟用壓縮
mapreduce.map.output.compress.codec(在mapred-site.xml中配置) org.apache.hadoop.io.compress.DefaultCodec mapper輸出 使用LZO或snappy編解碼器在此階段壓縮數(shù)據(jù)
mapreduce.output.fileoutputformat.compress(在mapred-site.xml中配置) false reducer輸出 這個(gè)參數(shù)設(shè)為true啟用壓縮
mapreduce.output.fileoutputformat.compress.codec(在mapred-site.xml中配置) org.apache.hadoop.io.compress. DefaultCodec reducer輸出 使用標(biāo)準(zhǔn)工具或者編解碼器茄袖,如gzip和bzip2
mapreduce.output.fileoutputformat.compress.type(在mapred-site.xml中配置) RECORD reducer輸出 SequenceFile輸出使用的壓縮類型:NONE和BLOCK
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末操软,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宪祥,更是在濱河造成了極大的恐慌聂薪,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝗羊,死亡現(xiàn)場(chǎng)離奇詭異藏澳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)耀找,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門翔悠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事凉驻∧逡” “怎么了复罐?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵涝登,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我效诅,道長(zhǎng)胀滚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任乱投,我火速辦了婚禮咽笼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戚炫。我一直安慰自己剑刑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布双肤。 她就那樣靜靜地躺著施掏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茅糜。 梳的紋絲不亂的頭發(fā)上七芭,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音蔑赘,去河邊找鬼狸驳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缩赛,可吹牛的內(nèi)容都是我干的耙箍。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼酥馍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辩昆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起物喷,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤卤材,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后峦失,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扇丛,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年尉辑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帆精。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卓练,靈堂內(nèi)的尸體忽然破棺而出隘蝎,到底是詐尸還是另有隱情,我是刑警寧澤襟企,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布嘱么,位于F島的核電站,受9級(jí)特大地震影響顽悼,放射性物質(zhì)發(fā)生泄漏曼振。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一蔚龙、第九天 我趴在偏房一處隱蔽的房頂上張望冰评。 院中可真熱鬧,春花似錦木羹、人聲如沸甲雅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抛人。三九已至,卻和暖如春穷遂,著一層夾襖步出監(jiān)牢的瞬間函匕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工蚪黑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盅惜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓忌穿,卻偏偏與公主長(zhǎng)得像抒寂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掠剑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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