MapReduce中的压缩
压缩
Hadoop权威指南5.2 P99
Mapper输入压缩
在有大量数据并反复处理的情况下,应考虑对输入进行压缩,然而你无需指定使用的译码方式,Hadoop会自动检测文件的扩展名,如果扩展名能够匹配,就会调用恰当的译码方式对文件进行压缩和解压。否则Hadoop不会使用任何译码器,抛异常
此阶段默认支持的格式有
org.apache.hadoop.io.compress.DefaultCodec
org.apache.hadoop.io.compress.GzipCodec
org.apache.hadoop.io.compress.Bzip2Codec
默认支持可以通过配置core-site.xml 的io.compression.codecs进行追加配置
Mapper输出压缩
当Map任务输出的中间数据流很大时,应考虑使用压缩技术,这能显著提升MR任务中的shuffle过程。shuffle 过程是整个hadoop处理过程中消耗资源最多的环节。如果发现因数据量大造成的网络传输慢,也应考虑压缩技术。
可用于Mapper输出的快速译码器包括LZO或者Snappy
此阶段压缩默认未开启,通过设置mapreduce.map.output.compress为true来开启Mapper 输出压缩
开启:
集群中:mapred-site.xml 将mapreduce.map.output.compress的false改为true
JAVA中:configuration.setBoolean(“mapreduce.map.output.compress”,
true)
压缩格式
集群中:修改mapred-site.xml 中的
mapreduce.map.output.compress.codec项
org.apache.hadoop.io.compress.压缩格式
JAVA:
Configuration.setClass(“mapreduce.map.output.compress.codec”,压缩格式 , CompressionCodec.class);
Reducer输出压缩
起到节省磁盘空间的作用。
集群:
开启
修改mapred-site.xml中的
mapreduce.output.fileoutputformat.compress
改为true开启输出压缩
压缩格式
修改mapred-site.xml中的
mapreduce.output.fileoutputformat.compress.codec
org.apache.hadoop.io.compress.压缩格式,默认值DefultCodec
JAVA:
开启:FileOutputFormat.setCompressOutput(job,true);
压缩格式:FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);