常见压缩格式
压缩方式 | 压缩比 | 压缩速度 | 解压缩速度 | 是否可分割 |
---|---|---|---|---|
gzip | 13.4% | 21 MB/s | 118 MB/s | 否 |
bzip2 | 13.2% | 2.4MB/s | 9.5MB/s | 是 |
lzo | 20.5% | 135 MB/s | 410 MB/s | 是 |
snappy | 22.2% | 172 MB/s | 409 MB/s | 否 |
压缩格式对应的编/解码器
压缩格式 | 对应的编/解码器 |
---|---|
DEFLATE | org.apache.hadoop.io.compress.DefaultCodec |
Gzip | org.apache.hadoop.io.compress.GzipCodec |
BZip2 | org.apache.hadoop.io.compress.BZip2Codec |
LZO | com.hadoop.compress.lzo.LzopCodec |
Snappy | org.apache.hadoop.io.compress.SnappyCodec |
压缩参数配置
1.在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 |
mapreduce.map.output.compress | false |
mapreduce.map.output.compress.codec | org.apache.hadoop.io.compress.DefaultCodec |
mapreduce.output.fileoutputformat.compress | false |
mapreduce.output.fileoutputformat.compress.codec | org.apache.hadoop.io.compress.DefaultCodec |
mapreduce.output.fileoutputformat.compress.type | RECORD |
2.Hive命令行session级别
(1) 开启Map输出阶段压缩
#开启hive中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
#开启map阶段输出压缩功能
set mapreduce.map.output.compress=true;
#设置map阶段的压缩方式
set mapreduce.map.output.compress.codec= org.apache.hadoop.io.compress.SnappyCodec;
(2) 开启Reduce输出阶段压缩
#开启Hive最终输出压缩
set hive.exec.compress.output=true;
#开启mapreduce最终输出压缩
set mapreduce.output.fileoutputformat.compress=true;
#设置mapreduce最终输出压缩方式
set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
#设置mapreduce最终输出压缩为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;
总结
没有一劳永逸的压缩格式,要根据实际情况合理选用。选择标准主要有如下三点:
- 压缩比:压缩比越高,压缩后文件越小;
- 压缩效率:越快越好;
- 压缩文件是否支持再分割:这会影响map阶段的并行;