Hadoop压缩方式详解

首先为什么要使用压缩

压缩技术能够有效的减少底层存储系统(HDFS)读写字节数,通过对mapper,reducer运行过程的数据进行压缩,以减少磁盘IO,提高MR程序的运行速度。

压缩的基本原则

1.运算密集型的任务,少使用压缩
2.IO密集型的任务,多使用压缩

MR支持的压缩格式

压缩格式 是否需要安装 算法 文件扩展名 是否可切分
DEFLATE deflate .deflate
Gzip deflate .gz
bzip2 bzip2 .bz2
LZO LZO .lzo
Snappy Snappy .snappy

压缩性能的比较

压缩格式 压缩大小 压缩速度
Gzip
bzip2
LZO
Snappy

压缩方式的选择

Gzip压缩

优点:压缩率比较的高,而且压缩/解压速度也比较的快;hadoop本身支持,大部分linux系统都自带,使用方便;
缺点:不支持split

Bzip2压缩

优点:支持split,具有很高的压缩率,hadoop本身自带;
缺点:压缩/解压缩慢

Lzo压缩

优点:压缩/解压缩速度比较快,合理的压缩率,支持split;
缺点:压缩率相对Gzip而言要低一些,hadoop本身不支持,需要自己手动安装;

Snappy压缩

优点:高速压缩速度与合理的压缩率
缺点:不支持split,hadoop不支持,需要手动安装

压缩位置的选择

压缩可以在MapReduce作用的任意阶段启用

压缩参数配置

参数 默认值 阶段 建议
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输出 这个参数设为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 reduce输出 这个参数设为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

你可能感兴趣的:(Hadoop)