1. 程式人生 > 其它 >HADOOP MAPREDUCE(13):Hadoop資料壓縮

HADOOP MAPREDUCE(13):Hadoop資料壓縮

1 概述

1)壓縮的好處和壞處

壓縮的優點:以減少磁碟IO、減少磁碟儲存空間。

壓縮的缺點:增加CPU開銷。

2)壓縮原則

(1)運算密集型的Job,少用壓縮

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

2 MR支援的壓縮編碼

1)壓縮演算法對比介紹

壓縮格式

Hadoop自帶?

演算法

副檔名

是否可切片

換成壓縮格式後,原來的程式是否需要修改

DEFLATE

是,直接使用

DEFLATE

.deflate

和文字處理一樣,不需要修改

Gzip

是,直接使用

DEFLATE

.gz

和文字處理一樣,不需要修改

bzip2

是,直接使用

bzip2

.bz2

和文字處理一樣,不需要修改

LZO

否,需要安裝

LZO

.lzo

需要建索引,還需要指定輸入格式

Snappy

是,直接使用

Snappy

.snappy

和文字處理一樣,不需要修改

2)壓縮效能的比較

壓縮演算法

原始檔案大小

壓縮檔案大小

壓縮速度

解壓速度

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/

Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speedsand reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger.On a single core of a Core i7 processor in 64-bit mode, Snappy compressesat about 250 MB/sec or more anddecompressesat about500 MB/sec or more.

3 壓縮方式選擇

壓縮方式選擇時重點考慮:壓縮/解壓縮速度、壓縮率(壓縮後儲存大小)、壓縮後是否可以支援切片

3.1 Gzip壓縮

優點:壓縮率比較高;

缺點:不支援Split;壓縮/解壓速度一般;

3.2 Bzip2壓縮

優點:壓縮率高;支援Split;

缺點:壓縮/解壓速度慢。

3.3 Lzo壓縮

優點:壓縮/解壓速度比較快;支援Split;

缺點:壓縮率一般;想支援切片需要額外建立索引。

3.4 Snappy壓縮

優點:壓縮和解壓縮速度快;

缺點:不支援Split;壓縮率一般;

3.5 壓縮位置選擇

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

4壓縮引數配置

1)為了支援多種壓縮/解壓縮演算法,Hadoop引入了編碼/解碼器

壓縮格式

對應的編碼/解碼器

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

2)要在Hadoop中啟用壓縮,可以配置如下引數

引數

預設值

階段

建議

io.compression.codecs

(在core-site.xml中配置)

無,這個需要在命令列輸入hadoopchecknative檢視

輸入壓縮

Hadoop使用副檔名判斷是否支援某種編解碼器

mapreduce.map.output.compress(在mapred-site.xml中配置)

false

mapper輸出

這個引數設為true啟用壓縮

mapreduce.map.output.compress.codec(在mapred-site.xml中配置)

org.apache.hadoop.io.compress.DefaultCodec

mapper輸出

企業多使用LZO或Snappy編解碼器在此階段壓縮資料

mapreduce.output.fileoutputformat.compress(在mapred-site.xml中配置)

false

reducer輸出

這個引數設為true啟用壓縮

mapreduce.output.fileoutputformat.compress.codec(在mapred-site.xml中配置)

org.apache.hadoop.io.compress.DefaultCodec

reducer輸出

使用標準工具或者編解碼器,如gzip和bzip2

本文來自部落格園,作者:秋華,轉載請註明原文連結:https://www.cnblogs.com/qiu-hua/p/15229080.html