hadoop之压缩

压缩策略和原则

1、压缩是提高Hadoop运行效率的优化策略。
通过对Mapper和Reduce运行过程的数据压缩,以减少磁盘I/O,以提高MR程序的运行速度。
注意:采用压缩技术减少了磁盘I/O,但也给CPU的运算增加了负担,所以压缩技术运用的当能提高性能,但运用不当也会降低性能。
压缩的基本原则:
(1)、运算密集型的JOb,少用压缩技术
(2)、I/O密集型的JOb,多用压缩技术
2、MR支持的压缩编码
在这里插入图片描述
为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器:
在这里插入图片描述
压缩方式的选择
1、Gzip压缩
优点:效率高,且压缩/解压速度块,Hadoop本身支持,大部分Linux系统都自带Gzip命令,使用方便。
缺点:不支持Split
应用:每个文件压缩之后在130M以内,都可以用Gzip
2、、Bzip2压缩
优点:支持Split,压缩率高,比Gzip压缩率还高,hadoop本身支持。
缺点:压缩/解压速度慢。
应用:速度要求不高,压缩率高的时候。
3、Lzo压缩
优点:压缩/解压速度块,合理的压缩率,支持Split,是Hadoop中最流行的压缩格式。
缺点:压缩率比Gzip要低,hadoop本身不支持,在应用中对Lzo格式的文件需要做一些特殊处理(为了支持Split,需要建索引,还需要指定InputFormat为Lzo格式)。
应用:文件大,压缩之后还大于200M以上,文件越大,Lzo优势越明显。
4、Snappy压缩
优点:速度快,合理的压缩率。
缺点:不支持Split,压缩率比Gzip要低,Hadoop本身不支持。
应用:当MapReduce作业的Map输出的数据比较大的时候,作为Map到Reduce中间数据的压缩格式,或者作为一个MapReduce作业的输出和另外一个MapReduce作业的输入。

压缩位置的选择
在这里插入图片描述
Map输出端到Reduce输入端采用压缩
在Drive类中添加几个设置:

//开启Map端输出压缩
configuration.setBoolean("mapreduce.map.output.compress", true);
//设置map端输出压缩方式
configuration.setclass("mapreduce.map.output.compress.codec",BZip2Codec.class, CompressionCodec.class);

Reduce输出端采用压缩
在Drive类中添加几个设置:

//设置Reduce端输出压缩开启
FileOutputFormat.setCompressOutput(job,true);
//设置Reduce端输出压缩方式 
FileOutputFormat.setOutputCompressorClass(job, BZip2Codec.class);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值