压缩
2020年11月6日
8:44
为了减少带宽,减少IO,对数据进行压缩,在适当的时候,是有必要的。
常见压缩格式
格式 | 速度 | 压缩比 | 可切分 | 缺点 | 场景 |
Gzip | 比较快 | 比较高 | 不可 | 不可切分 |
|
Bzip2 | 非常慢 | 非常高 | 可 | 慢 | 存储 |
Lzo | 很快 | 比较高- | 可 | 额外配置 | 常用 |
Snappy | 比较快 | 比较高- | 不可 | 不可切分,需要额外配置 |
|
压缩时机
在map,reduce前后都可以进行压缩,但是要考虑到任务是否合适。
参数配置
参数 | 默认值 | 阶段 | 建议 |
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 | reducer输出 | 这个参数设为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 |