黑猴子的家:MapReduce數(shù)據(jù)壓縮

1、概述

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

鑒于磁盤(pán)I/O和網(wǎng)絡(luò)帶寬是Hadoop的寶貴資源鸵熟,數(shù)據(jù)壓縮對(duì)于節(jié)省資源副编、最小化磁盤(pán)I/O和網(wǎng)絡(luò)傳輸非常有幫助。不過(guò)流强,盡管壓縮與解壓操作的CPU開(kāi)銷(xiāo)不高痹届,其性能的提升和資源的節(jié)省并非沒(méi)有代價(jià)。

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

壓縮mapreduce的一種優(yōu)化策略:通過(guò)壓縮編碼對(duì)mapper或者reducer的輸出進(jìn)行壓縮,以減少磁盤(pá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,多用壓縮

2肺稀、MapReduce支持的壓縮編碼

壓縮格式 工具 算法 文件擴(kuò)展名 是否可切分
DEFAULT 無(wú) DEFAULT .deflate
Gzip gzip DEFAULT .gz
bzip2 bzip2 bzip2 .bz2
LZO lzop LZO .lzo
LZ4 無(wú) LZ4 .lz4
Snappy 無(wú) Snappy .snappy

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

壓縮格式 對(duì)應(yīng)的編碼/解碼器
DEFLATE org.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
LZ4 org.apache.hadoop.io.compress.Lz4Codec
Snappy org.apache.hadoop.io.compress.SnappyCodec

壓縮性能的比較

壓縮算法 原始文件大小 壓縮文件大小 壓縮速度 解壓速度
gzip 8.3GB 1.8GB 17.5MB/s 58MB/s
bzip2 8.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.

3话原、采用壓縮的位置

壓縮可以在MapReduce作用的任意階段啟用炸茧。


1)輸入壓縮
在有大量數(shù)據(jù)并計(jì)劃重復(fù)處理的情況下,應(yīng)該考慮對(duì)輸入進(jìn)行壓縮稿静。然而,你無(wú)須顯示指定使用的編解碼方式辕狰。Hadoop自動(dòng)檢查文件擴(kuò)展名改备,如果擴(kuò)展名能夠匹配,就會(huì)用恰當(dāng)?shù)木幗獯a方式對(duì)文件進(jìn)行壓縮和解壓蔓倍。否則悬钳,Hadoop就不會(huì)使用任何編解碼器盐捷。

2)壓縮mapper輸出
當(dāng)map任務(wù)輸出的中間數(shù)據(jù)量很大時(shí),應(yīng)考慮在此階段采用壓縮技術(shù)默勾。這能顯著改善內(nèi)部數(shù)據(jù)Shuffle過(guò)程碉渡,而Shuffle過(guò)程在Hadoop處理過(guò)程中是資源消耗最多的環(huán)節(jié)。如果發(fā)現(xiàn)數(shù)據(jù)量大造成網(wǎng)絡(luò)傳輸緩慢母剥,應(yīng)該考慮使用壓縮技術(shù)滞诺。可用于壓縮mapper輸出的快速編解碼器包括LZO环疼、LZ4或者Snappy习霹。

注:LZO是供Hadoop壓縮數(shù)據(jù)用的通用壓縮編解碼器。其設(shè)計(jì)目標(biāo)是達(dá)到與硬盤(pán)讀取速度相當(dāng)?shù)膲嚎s速度炫隶,因此速度是優(yōu)先考慮的因素淋叶,而不是壓縮率。與gzip編解碼器相比伪阶,它的壓縮速度是gzip的5倍煞檩,而解壓速度是gzip的2倍。同一個(gè)文件用LZO壓縮后比用gzip壓縮后大50%栅贴,但比壓縮前小25%~50%斟湃。這對(duì)改善性能非常有利,map階段完成時(shí)間快4倍筹误。

3)壓縮reducer輸出
在此階段啟用壓縮技術(shù)能夠減少要存儲(chǔ)的數(shù)據(jù)量桐早,因此降低所需的磁盤(pán)空間。當(dāng)mapreduce作業(yè)形成作業(yè)鏈條時(shí)厨剪,因?yàn)榈诙€(gè)作業(yè)的輸入也已壓縮哄酝,所以啟用壓縮同樣有效。

4祷膳、壓縮配置參數(shù)

要在Hadoop中啟用壓縮陶衅,可以配置如下參數(shù)(mapred-site.xml文件中)

參數(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, org.apache.hadoop.io.compress.Lz4Codec 輸入壓縮 Hadoop使用文件擴(kuò)展名判斷是否支持某種編解碼器
mapreduce.map.output.compress false mapper輸出 這個(gè)參數(shù)設(shè)為true啟用壓縮
mapreduce.map.output.compress.codec org.apache.hadoop.io.compress.DefaultCodec mapper輸出 使用LZO、LZ4或snappy編解碼器在此階段壓縮數(shù)據(jù)
mapreduce.output.fileoutputformat.compress false reducer輸出 這個(gè)參數(shù)設(shè)為true啟用壓縮
mapreduce.output.fileoutputformat.compress.codec org.apache.hadoop.io.compress. DefaultCodec reducer輸出 使用標(biāo)準(zhǔn)工具或者編解碼器直晨,如gzip和bzip2
mapreduce.output.fileoutputformat.compress.type RECORD reducer輸出 SequenceFile輸出使用的壓縮類(lèi)型:NONE和BLOCK
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搀军,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子勇皇,更是在濱河造成了極大的恐慌罩句,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敛摘,死亡現(xiàn)場(chǎng)離奇詭異门烂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)屯远,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔓姚,“玉大人,你說(shuō)我怎么就攤上這事慨丐∑缕辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵房揭,是天一觀的道長(zhǎng)备闲。 經(jīng)常有香客問(wèn)我,道長(zhǎng)崩溪,這世上最難降的妖魔是什么浅役? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮伶唯,結(jié)果婚禮上觉既,老公的妹妹穿的比我還像新娘。我一直安慰自己乳幸,他們只是感情好瞪讼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著粹断,像睡著了一般符欠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓶埋,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天希柿,我揣著相機(jī)與錄音,去河邊找鬼养筒。 笑死曾撤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晕粪。 我是一名探鬼主播挤悉,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼巫湘!你這毒婦竟也來(lái)了装悲?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尚氛,失蹤者是張志新(化名)和其女友劉穎诀诊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體阅嘶,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡属瓣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奠涌。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖磷杏,靈堂內(nèi)的尸體忽然破棺而出溜畅,到底是詐尸還是另有隱情,我是刑警寧澤极祸,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布慈格,位于F島的核電站,受9級(jí)特大地震影響遥金,放射性物質(zhì)發(fā)生泄漏浴捆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一稿械、第九天 我趴在偏房一處隱蔽的房頂上張望选泻。 院中可真熱鬧,春花似錦美莫、人聲如沸页眯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窝撵。三九已至,卻和暖如春襟铭,著一層夾襖步出監(jiān)牢的瞬間碌奉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工寒砖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赐劣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓入撒,卻偏偏與公主長(zhǎng)得像隆豹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茅逮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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