Hadoop数据压缩
压缩能够有效减少底层存储(HDFS)读写字节数,提高网络宽带和磁盘空间的效率
在MapReduce里,通过压缩编码对Mapper或Reducer数据传输进行数据压缩,可以减少磁盘IO
基本原则
(1)运算密集型任务少用压缩
(2)IO密集型的任务,多用压缩
MapReduce支持的压缩编码
| 压缩格式 | Hadoop自带 | 文件扩展名 | 切分 |
|---|---|---|---|
| DEFAULT | 是 | .deflate | 否 |
| Gzip | 是 | .gz | 否 |
| Gzip | 是 | .gz | 否 |
| bzip2 | 是 | .bz2 | 是 |
| LZO | 否 | .lzo | 否 |
| Snappy | 否 | .snappy | 否 |
编码/解码器
| DEFAULT | org.apache.hadoop.io.compress.DefaultCodec |
| Gzip | org.apache.hadoop.io.compress.GzipCodec |
| bzip2 | org.apache.hadoop.io.compress.BZip2Codec |
| LZO | org.apache.hadoop.io.lzo.LzoCodec |
| Snappy | org.apache.hadoop.io.compress.SnappyCodec |
压缩性能
| 压缩类型 | 原始文件大小 | 压缩文件大小 | 压缩速度 | 解压速度 |
|---|---|---|---|---|
| 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 |
Mapper阶段数据压缩
//开始Mapper端的输出压缩
conf.setBoolean("mapreduce.map.output.compress",true);
//设置压缩方式
conf.setClass("mapreduce.map.output.compress.codec", DefaultCodec.class, CompressionCodec.class);
Reducer阶段数据压缩
//开始Reducer端的输出压缩
FileOutputFormat.setCompressOutput(job, true);
//设置压缩方式
FileOutputFormat.setOutputCompressorClass(job, DefaultCodec.class);
1332

被折叠的 条评论
为什么被折叠?



