`
退役的龙弟弟
  • 浏览: 451831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mapreduce的reduce输出文件进行压缩

 
阅读更多

hadoop对每个压缩格式的支持,详细见下表:

 压缩格式  工具  算法  文件扩展名  多文件  可分割性
 DEFLATE  无  DEFLATE  .deflate  不  不
 gzip  gzip  DEFLATE  .gz  不  不
 ZIP  zip  DEFLATE  .zip  是  是,在文件范围内
 bzip2  bzip2  bzip2  .bz2  不  是
 LZO  lzop  LZO  .lzo  不  否

 

 

 

 

 

 

 

 

hadoop下各种压缩算法的压缩比,压缩时间,解压时间见下表:

压缩算法 原始文件大小 压缩后的文件大小 压缩速度 解压缩速度
gzip   8.3GB   1.8GB 17.5MB/s 58MB/s
bzip2 8.3GB 1.1GB 2.4MB/s 9.5MB/s
LZO-bset 8.3GB 2GB 4MB/s 60.6MB/s
LZO 8.3GB 2.9GB 49.3MB/S 74.6MB/s

 

 

 

 

 

现在最常用的压缩方式是gzip和lzo。两者相比:gzip压缩想过更好能达到原大小的25%,LZO则能到30%-40%。lzo的压缩和解压速度更快,lzo的解压速度大概是gzip的3倍左右

 

 

对输出文件进行压缩很简单,只需要     1、指定作业使用压缩 2、指定压缩格式

Configuration conf = new Configuration();
			//map任务中间输出使用gzip压缩-------不能用
//			conf.setBoolean("mapred.compress.map.output", true);  
//		    conf.setClass("mapred.map.output.compression.codec",GzipCodec.class, CompressionCodec.class);
		    
			Job job = new Job(conf, "wordcount Job");
			job.setOutputKeyClass(Text.class);
			job.setOutputValueClass(IntWritable.class);
			job.setMapperClass(mapperString.class);
//			job.setCombinerClass(reduceStatistics.class);
			job.setReducerClass(reduceStatistics.class);
			
			FileInputFormat.addInputPath(job, new Path(in));
			FileOutputFormat.setOutputPath(job, new Path(out));
			
			//将reduce输出文件压缩
			FileOutputFormat.setCompressOutput(job, true);  //job使用压缩
	        FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class); //设置压缩格式
	        
			job.waitForCompletion(true);

 

执行结果:

nange@ubuntu:~/work/test/word$ hadoop fs -ls /hdfs/test/wordcount/out/
Found 6 items
-rw-r--r--   3 nange supergroup          0 2014-04-24 09:57 /hdfs/test/wordcount/out/_SUCCESS
drwxr-xr-x   - nange supergroup          0 2014-04-24 09:57 /hdfs/test/wordcount/out/hadoop
-rw-r--r--   3 nange supergroup         28 2014-04-24 09:57 /hdfs/test/wordcount/out/hello-r-00000.gz
-rw-r--r--   3 nange supergroup         29 2014-04-24 09:57 /hdfs/test/wordcount/out/other-r-00000.gz
-rw-r--r--   3 nange supergroup         20 2014-04-24 09:57 /hdfs/test/wordcount/out/part-r-00000.gz
-rw-r--r--   3 nange supergroup         28 2014-04-24 09:57 /hdfs/test/wordcount/out/world-r-00000.gz

 查看gzip文件

nange@ubuntu:~/work/test/word$ hadoop fs -text /hdfs/test/wordcount/out/hadoop/-r-00000.gz
hadoop	1

 

分享到:
评论

相关推荐

    mapreduce案例文本文件.zip

    在“压缩包子文件的文件名称列表”中,我们只有一个条目:“mapreduce案例文本文件”。这可能意味着压缩包内有一个或多个文件,这些文件可能是用于MapReduce作业的输入数据,也可能是作业执行后的输出结果。如果其中...

    MapReduce输出至hbase共16页.pdf.zip

    3. 实现TableOutputFormat:MapReduce的输出格式默认为文件,但要将结果直接写入HBase,需自定义TableOutputFormat类,使其能够将MapReduce的输出直接转化为HBase的Put操作。 4. 写入HBase:在Reduce阶段,每个...

    Hadoop MapReduce入门

    首先,脚本通过循环遍历目录下的所有文件,然后使用gunzip命令对每个文件进行解压缩,接着用awk命令提取出气温的有效数据,并通过一系列的判断逻辑来找出每年的最高温度值。 在MapReduce实现部分,首先将输入数据...

    MapReduce简单程序示例

    在提供的压缩文件"MapReduce简单程序示例.rar"中,可能包含了一个这样的示例程序,以及相关的指导文档"新建文本文档.txt"。通过阅读和运行这些示例,你可以更深入地了解MapReduce的工作原理和编程模式。在实际应用中...

    大数据技术基础实验报告-MapReduce编程.doc

    可以从Github上下载`hadoop2x-eclipse-plugin`,解压缩后,将jar文件复制到Eclipse的plugins目录,并运行Eclipse的清理命令以启用插件。这一步骤只需在首次安装后执行一次。 配置Hadoop-Eclipse-Plugin是实验的关键...

    MapReduceV2笔记

    在排序方面,MapReduce会自动对map输出的键值对按键进行排序,并将排序后的结果发送给reduce任务。 数据压缩是提高MapReduce运行效率的重要手段。Hadoop支持多种压缩算法,并提供了在配置文件和程序中设置压缩的...

    mapreduce详细流程

    - 在`collect`方法中,对输出的每个键值对进行分区操作,默认情况下使用`Hash`函数根据键来确定其所属的分区。 - 分区后的数据以三元组的形式`(key/value/partitionNum)`写入环形缓冲区中。 4. **溢写阶段** ...

    【MapReduce篇08】MapReduce优化1

    3. **配置参数**:如`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`分别控制Map和Reduce Task的内存使用,`mapreduce.map.cpu.vcores`和`mapreduce.reduce.cpu.vcores`控制核心使用,以及`mapreduce....

    最高气温 map reduce hadoop 实例

    【压缩包子文件的文件名称列表】:max.jar、raw.txt 在提供的压缩包中,有两个文件。"max.jar"是包含MapReduce作业的Java应用,已经编译打包成了JAR文件,用于在Hadoop集群上运行。而"raw.txt"则很可能是我们的输入...

    中文分词mapreduce程序

    总结来说,这个“中文分词MapReduce程序”是一个基于Java的分布式分词工具,利用MapReduce模型对大量中文文本进行高效分词处理,通过分词将原始文本转化为可供分析的词汇单元,并在Reduce阶段完成词频统计。...

    MapReduce计算模型详讲(结合源码深入解读)

    5. Reduce阶段:Reduce阶段是MapReduce模型的第二阶段,负责将Map阶段的输出结果进行聚合和处理。Reduce阶段的输出结果是一个键值对序列。 6. 分片划分:MapReduce模型使用分片划分策略来将输入文件分割成小块。分...

    Data-Intensive Text Processing with MapReduce

    次序排序是指在MapReduce中对输出结果进行排序的过程。在某些情况下,如进行聚合操作时,需要对中间结果进行排序才能得到正确的最终结果。 - **排序**:可以通过自定义比较器实现排序功能,确保数据按需排序。 ####...

    MapReduce经典常见面试实操题

    针对给定的面试题,我们需要设计一个MapReduce程序来对三个文件(file1、file2、file3)中的数字进行整体升序排序。首先,我们需要理解输入格式,每个文件中每行都包含一个数字。我们的目标是合并这些数字,然后进行...

    Hadoop.MapReduce.分析

    - **OutputFormat**: 定义了如何将MapReduce任务的结果写入输出文件。常见的OutputFormat包括`TextOutputFormat`、`SequenceFileOutputFormat`等。 - **RecordWriter**: 负责将MapReduce的输出结果写入文件系统。 #...

    大数据平台构建:MapReduce运行原理.pptx

    Shuffle阶段是MapReduce的核心,它将Map的输出进行整理,准备传递给Reduce任务。Shuffle分为map端和reduce端两个部分。在map端,map的输出首先被写入内存缓冲区,当缓冲区接近满时,数据会被溢写到磁盘,并根据预设...

    MapReduce技术深入理解.pptx

    MapReduce编程模型基于一个简单的思想:通过map阶段将原始数据分解为键值对,然后在reduce阶段对这些键值对进行聚合。以WordCount为例,map函数将每个文本行中的单词转化为(key, value)对,其中key是单词,value通常...

    mapreduce基础实战.docx

    - **实现**:实现`reduce()`方法,在该方法中处理Mapper输出的键值对列表,对相同键的值进行合并、排序和聚合。 3. **Driver类** - **配置**:配置作业参数,如输入路径、输出路径、Mapper和Reducer类、序列化...

    Java写的hadoop压缩worldcount例子

    在Hadoop MapReduce中,可以通过配置`mapreduce.map.output.compress`和`mapreduce.reduce.output.compress`来开启输出数据的压缩。同时,需要指定相应的压缩编码器,例如`mapreduce.map.output.compress.codec`和`...

Global site tag (gtag.js) - Google Analytics