Hadoop-数据压缩


原则

MapReduce 支持压缩,通过压缩算法对 mapper 或者 reducer 的最终数据结果进行压缩

  • 好处:减少了磁盘 io,提高了 MR 获取数据的速度,节省了磁盘空间
  • 坏处:压缩需要增加 cpu 的运算负担

原则:

  • 运算密集的 job,少用压缩,尤其是中间数据
  • Io 密集的 job,可以用压缩,尤其是最终归档数据

官方文档


Mapper 输出压缩

配置文档:

  • mapreduce.map.output.compress=false
  • mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.DefaultCodec

在代码中进行配置:

conf.setBoolean(Job.MAP_OUTPUT_COMPRESS, true);
conf.setClass(Job.MAP_OUTPUT_COMPRESS_CODEC, GzipCodec.class, CompressionCodec.class);

Reduce 输出压缩

配置文档:

  • mapreduce.output.fileoutputformat.compress=false
  • mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.DefaultCodec
  • mapreduce.output.fileoutputformat.compress.type=RECORD

在代码中进行配置:

Job job = Job.getInstance(conf);
FileOutputFormat.setCompressOutput(job, true);
FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);

支持的压缩类型

不建议使用配置文档的方式,不灵活,可以使用代码进行配置
配置文件官方文档


文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录