1.压缩

在Hadoop中MR一共支持四种编码分别是:default,gzip,bzip2,lzo和snappy

下面是这几种压缩格式的说明:

压缩格式

工具

算法

后缀名

是否可切分

default


default

.deflate

不可以切分

gzip

gzip

default

.gzp

不可以切分

bzip2

bzip2

bzip2

bz2

可以切分

lzo

lzo

lzo

.lzo

可以切分

snappy


snappy

.snappy

不可以切分

 

下面是各个压缩算法之间的比较(目前仅比较了gzip,bzip2,lzo三种格式)

压缩格式

文件大小

压缩后大小

压缩速度

解压速度

gzip

8.3g

1.8g

17.5m/s

58m/s

bzip2

8.3g

1.1g

2.4m/s

9.5m/s

lzo

8.3g

2.9g

49.5m/s

74.5m/s

 

 

 

 

 

 

 

我们不难得出结论:

压缩后文件大小:lzo>gzip>bzip2
压缩速度:lzo>gzip>bzip2
解压速度:lzo>gzip>bzip2

所以如果追求节省存储空间可以选择bzip2,但是如果追求速度的话那就选择lzo,当然介于两者之间的gzip也是很好的选择,压缩格式本就没有好坏之分,一切由实际场景的业务来决定。

要在Hadoop中启用压缩,可以配置如下参数(mapred-site.xml文件中):

参数

默认值

阶段

建议

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使用文件扩展名判断是否支持某种编解码器

mapreduce.map.output.compress

false

mapper输出

这个参数设为true启用压缩

mapreduce.map.output.compress.codec

org.apache.hadoop.io.compress.DefaultCodec

mapper输出

使用LZO、LZ4或snappy编解码器在此阶段压缩数据

mapreduce.output.fileoutputformat.compress

false

reducer输出

这个参数设为true启用压缩

mapreduce.output.fileoutputformat.compress.codec

org.apache.hadoop.io.compress. DefaultCodec

reducer输出

使用标准工具或者编解码器,如gzip和bzip2

mapreduce.output.fileoutputformat.compress.type

RECORD

reducer输出

SequenceFile输出使用的压缩类型:NONE和BLOCK

 

2.存储格式

 ---未完-----