转载请注明出处:http://blog.csdn.net/lastsweetop/article/details/9187721

作为输入

当压缩文件做为mapreduce的输入时,mapreduce将自动通过扩展名找到相应的codec对其解压。

作为输出

当mapreduce的输出文件需要压缩时,可以更改mapred.output.compress为true,mapped.output.compression.codec为想要使用的codec的类名就
可以了,当然你可以在代码中指定,通过调用FileOutputFormat的静态方法去设置这两个属性,我们来看代码:
  1. package com.sweetop.styhadoop;
  2. import org.apache.hadoop.fs.Path;
  3. import org.apache.hadoop.io.IntWritable;
  4. import org.apache.hadoop.io.Text;
  5. import org.apache.hadoop.io.compress.GzipCodec;
  6. import org.apache.hadoop.mapreduce.Job;
  7. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  8. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  9. import java.io.IOException;
  10. /**
  11. * Created with IntelliJ IDEA.
  12. * User: lastsweetop
  13. * Date: 13-6-27
  14. * Time: 下午7:48
  15. * To change this template use File | Settings | File Templates.
  16. */
  17. public class MaxTemperatureWithCompression {
  18. public static void main(String[] args) throws Exception {
  19. if (args.length!=2){
  20. System.out.println("Usage: MaxTemperature <input path> <out path>");
  21. System.exit(-1);
  22. }
  23. Job job=new Job();
  24. job.setJarByClass(MaxTemperature.class);
  25. job.setJobName("Max Temperature");
  26. FileInputFormat.addInputPath(job, new Path(args[0]));
  27. FileOutputFormat.setOutputPath(job, new Path(args[1]));
  28. job.setMapperClass(MaxTemperatrueMapper.class);
  29. job.setCombinerClass(MaxTemperatureReducer.class);
  30. job.setReducerClass(MaxTemperatureReducer.class);
  31. job.setOutputKeyClass(Text.class);
  32. job.setOutputValueClass(IntWritable.class);
  33. FileOutputFormat.setCompressOutput(job, true);
  34. FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);
  35. System.exit(job.waitForCompletion(true)?0:1);
  36. }
  37. }

输入也是一个压缩文件

  1. ~/hadoop/bin/hadoop com.sweetop.styhadoop.MaxTemperatureWithCompression   input/data.gz  output/
输出的每一个part都会被压缩,我们这里只有一个part,看下压缩了的输出
  1. [hadoop@namenode test]$hadoop fs -get output/part-r-00000.gz .
  2. [hadoop@namenode test]$ls
  3. 1901  1902  ch2  ch3  ch4  data.gz  news.gz  news.txt  part-r-00000.gz
  4. [hadoop@namenode test]$gunzip -c part-r-00000.gz
  5. 1901<span style="white-space:pre">  </span>317
  6. 1902<span style="white-space:pre">  </span>244

如果你要将序列文件做为输出,你需要设置mapred.output.compression.type属性来指定压缩类型,默认是RECORD类型,它会按单个的record压缩,如果指定为BLOCK类型,它将一组record压缩,压缩效果自然是BLOCK好。

当然代码里也可以设置,你只需调用SequenceFileOutputFormat的setOutputCompressionType方法进行设置。
  1. SequenceFileOutputFormat.setOutputCompressionType(job, SequenceFile.CompressionType.BLOCK);

如果你用Tool接口来跑mapreduce的话,可以在命令行设置这些参数,明显比硬编码好很多

压缩map输出

即使你的mapreduce的输入输出都是未压缩的文件,你仍可以对map任务的中间输出作压缩,因为它要写在硬盘并且通过网络传输到reduce节点,对其压
缩可以提高很多性能,这些工作也是只要设置两个属性即可,我们看下代码里怎么设置:
  1. Configuration conf = new Configuration();
  2. conf.setBoolean("mapred.compress.map.output", true);
  3. conf.setClass("mapred.map.output.compression.codec",GzipCodec.class, CompressionCodec.class);
  4. Job job=new Job(conf);

mr中间结果优化的更多相关文章

  1. 【Hadoop】Hadoop MR 性能优化 Combiner机制

    1.概念 2.参考资料 提高hadoop的mapreduce job效率笔记之二(尽量的用Combiner) :http://sishuo(k).com/forum/blogPost/list/582 ...

  2. Hive整体优化策略

    一 整体架构优化 现在hive的整体框架如下,计算引擎不仅仅支持Map/Reduce,并且还支持Tez.Spark等.根据不同的计算引擎又可以使用不同的资源调度和存储系统. 整体架构优化点: 1 根据 ...

  3. MR中的combiner和partitioner

    1.combiner combiner是MR编程模型中的一个组件: 有些任务中map可能会产生大量的本地输出,combiner的作用就是在map端对输出先做一次合并,以减少map和reduce节点之间 ...

  4. Hadoop优化

    一.影响MR程序效率的因素 1.计算机性能: CPU.内存.磁盘.网络, 计算机的性能会影响MR程序的速度与效率 2.I/O方面 1)数据倾斜(代码优化) 2)map和reduce数量设置不合理(通过 ...

  5. Hadoop3.x 三大组件详解

    Hadoop Hadoop适合海量数据分布式存储和分布式计算 运行用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理 1. 概述 1.1 简介 Hadoop核心组件 HDFS (分布式文 ...

  6. 浅析Hadoop文件格式

    Hadoop 作为MR 的开源实现,一直以动态运行解析文件格式并获得比MPP数据库快上几倍的装载速度为优势.不过,MPP数据库社区也一直批评Hadoop由于文件格式并非为特定目的而建,因此序列化和反序 ...

  7. hadoop 原理: 浅析Hadoop文件格式

    Hadoop 作为MR 的开源实现,一直以动态运行解析文件格式并获得比MPP数据库快上几倍的装载速度为优势.不过,MPP数据库社区也一直批评Hadoop由于文件格式并非 为特定目的而建,因此序列化和反 ...

  8. 【原创】大数据基础之Hive(5)性能调优Performance Tuning

    1 compress & mr hive默认的execution engine是mr hive> set hive.execution.engine;hive.execution.eng ...

  9. Shark简介、部署及编译小结

    http://blog.csdn.net/pelick/article/details/11964291 Shark简介 Shark即Hive on Spark,本质上是通过Hive的HQL解析,把H ...

随机推荐

  1. C#的四个基本技巧

    1.如果可能尽量使用接口来编程 .NET框架包括类和接口,在编写程序的时候,你可能知道正在用.NET的哪个类.然而,在这种情况下如果你用.NET支持的接口而不是它的类来编程时,代码会变得更加稳定.可用 ...

  2. sar详解(linux/unix通用)

    转载:http://www.toxingwang.com/linux-unix/2027.html sar是linux和unix通用的性能报告工具,常用命令组合如下: sar 命令行的常用格式: sa ...

  3. 从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?

    这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { pub ...

  4. Ubuntu 14.04安装语言包后无法选择汉语问题解决

    如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 安装完语言包后.尽管里面有了汉语.可是是灰色的.例如以下图所看到的: watermar ...

  5. sql分页性能测试结果

    --方案一: declare @d datetime set @d = getdate() ID from Info order by ID) order by ID select [not in方法 ...

  6. 河流Shader

    原地址:http://www.unity蛮牛.com/blog-2321-336.html Shader "Custom/TextureEffect" { Properties { ...

  7. solr学习(一)

    1.搭建solr环境 1.1 下载solr安装包,下载地址:http://lucene.apache.org/solr/mirrors-solr-latest-redir.html 下载并解压 1.2 ...

  8. 将图片转成base64字符串并在JSP页面显示的Java代码

    *本事例主要讲了如下几点:  * 1:将图片转换为BASE64加密字符串.  * 2:将图片流转换为BASE64加密字符串.  * 3:将BASE64加密字符串转换为图片. * 4:在jsp文件中以引 ...

  9. java 泛型--桥方法

    因为 java 在编译源码时, 会进行 类型擦除, 导致泛型类型被替换限定类型(无限定类型就使用 Object). 因此为保持继承和重载的多态特性, 编译器会生成 桥方法. 本文最后附录所有源码. P ...

  10. Loadrunner中影响"响应时间"的设置

    1.Runtime setting的设置 *Think time 这个就不多说了,如果忽略则"响应时间"会变短,但同时对服务器的压力增大,从而间接影响响应时间 在anlaysis里 ...