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

目錄
????1 概述
????2 MR支持的壓縮編碼
????3 壓縮方式選擇
????4 壓縮位置選擇
????5 壓縮配置參數(shù)
????6 壓縮實戰(zhàn)

1 概述

????壓縮技術(shù)能夠有效減少底層存儲系統(tǒng)(HDFS)讀寫字節(jié)數(shù)混移。壓縮提高了網(wǎng)絡(luò)帶寬和磁盤空間的效率。在Hadoop下,尤其是數(shù)據(jù)規(guī)模很大和工作負載密集的情況下葬项,使用數(shù)據(jù)壓縮顯得非常重要博杖。在這種情況下蛾找,I/O操作和網(wǎng)絡(luò)數(shù)據(jù)傳輸要花大量的時間烤黍。還有,Shuffle與Merge過程同樣也面臨著巨大的I/O壓力擅耽。

????鑒于磁盤I/O和網(wǎng)絡(luò)帶寬是Hadoop的寶貴資源活孩,數(shù)據(jù)壓縮對于節(jié)省資源、最小化磁盤I/O和網(wǎng)絡(luò)傳輸非常有幫助秫筏。不過诱鞠,盡管壓縮與解壓操作的CPU開銷不高,其性能的提升和資源的節(jié)省并非沒有代價这敬。

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

????壓縮Mapreduce的一種優(yōu)化策略:通過壓縮編碼對Mapper或者Reducer的輸出進行壓縮崔涂,以減少磁盤IO阳掐,提高MR程序運行速度(但相應(yīng)增加了cpu運算負擔(dān))

????注意:壓縮特性運用得當能提高性能,但運用不當也可能降低性能。

(1)基本原則:

  • (a)運算密集型的job缭保,少用壓縮
  • (b)IO密集型的job汛闸,多用壓縮
2 MR支持的壓縮編碼
壓縮格式 hadoop自帶? 算法 文件擴展名 是否可切分 換成壓縮格式后艺骂,原來的程序是否需要修改
DEFAULT 是诸老,直接使用 DEFAULT .deflate 和文本處理一樣,不需要修改
Gzip 是钳恕,直接使用 DEFAULT .gz 和文本處理一樣别伏,不需要修改
bzip2 是,直接使用 bzip2 .bz2 和文本處理一樣忧额,不需要修改
LZO 否厘肮,需要安裝 LZO .lzo 需要建索引,還需要指定輸入格式
Snappy 否睦番,需要安裝 Snappy .snappy 和文本處理一樣类茂,不需要修改

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

壓縮格式 對應(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
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/

3 壓縮方式選擇

(1) Gzip壓縮

  • 優(yōu)點:壓縮率比較高巩检,而且壓縮/解壓速度也比較快;hadoop本身支持注益,在應(yīng)用中處理gzip格式的文件就和直接處理文本一樣碴巾;大部分linux系統(tǒng)都自帶gzip命令溯捆,使用方便丑搔。

  • 缺點:不支持split。

應(yīng)用場景:當每個文件壓縮之后在130M以內(nèi)的(1個塊大小內(nèi))提揍,都可以考慮用gzip壓縮格式啤月。例如說一天或者一個小時的日志壓縮成一個gzip文件,運行mapreduce程序的時候通過多個gzip文件達到并發(fā)劳跃。hive程序谎仲,streaming程序,和java寫的mapreduce程序完全和文本處理一樣刨仑,壓縮之后原來的程序不需要做任何修改郑诺。

(2) Bzip2壓縮

  • 優(yōu)點:支持split;具有很高的壓縮率杉武,比gzip壓縮率都高辙诞;hadoop本身支持,但不支持native(java和c互操作的API接口)轻抱;在linux系統(tǒng)下自帶bzip2命令飞涂,使用方便。

  • 缺點:壓縮/解壓速度慢;不支持native较店。

應(yīng)用場景:適合對速度要求不高士八,但需要較高的壓縮率的時候,可以作為mapreduce作業(yè)的輸出格式梁呈;或者輸出之后的數(shù)據(jù)比較大婚度,處理之后的數(shù)據(jù)需要壓縮存檔減少磁盤空間并且以后數(shù)據(jù)用得比較少的情況;或者對單個很大的文本文件想壓縮減少存儲空間官卡,同時又需要支持split陕见,而且兼容之前的應(yīng)用程序(即應(yīng)用程序不需要修改)的情況。

(3) Lzo壓縮

  • 優(yōu)點:壓縮/解壓速度也比較快味抖,合理的壓縮率评甜;支持split,是hadoop中最流行的壓縮格式仔涩;可以在linux系統(tǒng)下安裝lzop命令忍坷,使用方便。

  • 缺點:壓縮率比gzip要低一些熔脂;hadoop本身不支持貌虾,需要安裝;在應(yīng)用中對lzo格式的文件需要做一些特殊處理(為了支持split需要建索引废膘,還需要指定inputformat為lzo格式)癣猾。

應(yīng)用場景:一個很大的文本文件,壓縮之后還大于200M以上的可以考慮适秩,而且單個文件越大绊序,lzo優(yōu)點越越明顯。

(4 )Snappy壓縮

  • 優(yōu)點:高速壓縮速度和合理的壓縮率秽荞。

  • 缺點:不支持split骤公;壓縮率比gzip要低;hadoop本身不支持扬跋,需要安裝阶捆;

應(yīng)用場景:當Mapreduce作業(yè)的Map輸出的數(shù)據(jù)比較大的時候,作為Map到Reduce的中間數(shù)據(jù)的壓縮格式钦听;或者作為一個Mapreduce作業(yè)的輸出和另外一個Mapreduce作業(yè)的輸入洒试。

4 壓縮位置選擇

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

5 壓縮配置參數(shù)

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

參數(shù) 默認值 階段 建議
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使用文件擴展名判斷是否支持某種編解碼器
mapreduce.map.output.compress(在mapred-site.xml中配置) false mapper輸出 這個參數(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輸出 這個參數(shù)設(shè)為true啟用壓縮
mapreduce.output.fileoutputformat.compress.codec(在mapred-site.xml中配置) org.apache.hadoop.io.compress. DefaultCodec reducer輸出 使用標準工具或者編解碼器垒棋,如gzip和bzip2
mapreduce.output.fileoutputformat.compress.type(在mapred-site.xml中配置) RECORD reducer輸出 SequenceFile輸出使用的壓縮類型:NONE和BLOCK
6 壓縮實戰(zhàn)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市余指,隨后出現(xiàn)的幾起案子捕犬,更是在濱河造成了極大的恐慌跷坝,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碉碉,死亡現(xiàn)場離奇詭異柴钻,居然都是意外死亡,警方通過查閱死者的電腦和手機垢粮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門贴届,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜡吧,你說我怎么就攤上這事毫蚓。” “怎么了昔善?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵元潘,是天一觀的道長。 經(jīng)常有香客問我君仆,道長翩概,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任返咱,我火速辦了婚禮钥庇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咖摹。我一直安慰自己评姨,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布萤晴。 她就那樣靜靜地躺著吐句,像睡著了一般。 火紅的嫁衣襯著肌膚如雪硫眯。 梳的紋絲不亂的頭發(fā)上蕴侧,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天择同,我揣著相機與錄音两入,去河邊找鬼。 笑死敲才,一個胖子當著我的面吹牛裹纳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播紧武,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼剃氧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了阻星?” 一聲冷哼從身側(cè)響起朋鞍,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤已添,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滥酥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體更舞,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年坎吻,在試婚紗的時候發(fā)現(xiàn)自己被綠了缆蝉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡瘦真,死狀恐怖刊头,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诸尽,我是刑警寧澤原杂,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站您机,受9級特大地震影響污尉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜往产,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一被碗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仿村,春花似錦锐朴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至畏鼓,卻和暖如春酱酬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背云矫。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工膳沽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人让禀。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓挑社,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巡揍。 傳聞我的和親對象是個殘疾皇子痛阻,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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