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案例文本文件”。这可能意味着压缩包内有一个或多个文件,这些文件可能是用于MapReduce作业的输入数据,也可能是作业执行后的输出结果。如果其中...
3. 实现TableOutputFormat:MapReduce的输出格式默认为文件,但要将结果直接写入HBase,需自定义TableOutputFormat类,使其能够将MapReduce的输出直接转化为HBase的Put操作。 4. 写入HBase:在Reduce阶段,每个...
文档展示了如何在MapReduce作业中处理LZO压缩文件,这对于处理大量压缩日志数据尤其有用。 最后,文档中提供了QQ群和邮箱信息,方便读者进行交流和获取进一步的帮助。这样的社群支持对于解决在实际工作中遇到的问题...
首先,脚本通过循环遍历目录下的所有文件,然后使用gunzip命令对每个文件进行解压缩,接着用awk命令提取出气温的有效数据,并通过一系列的判断逻辑来找出每年的最高温度值。 在MapReduce实现部分,首先将输入数据...
在提供的压缩文件"MapReduce简单程序示例.rar"中,可能包含了一个这样的示例程序,以及相关的指导文档"新建文本文档.txt"。通过阅读和运行这些示例,你可以更深入地了解MapReduce的工作原理和编程模式。在实际应用中...
可以从Github上下载`hadoop2x-eclipse-plugin`,解压缩后,将jar文件复制到Eclipse的plugins目录,并运行Eclipse的清理命令以启用插件。这一步骤只需在首次安装后执行一次。 配置Hadoop-Eclipse-Plugin是实验的关键...
在排序方面,MapReduce会自动对map输出的键值对按键进行排序,并将排序后的结果发送给reduce任务。 数据压缩是提高MapReduce运行效率的重要手段。Hadoop支持多种压缩算法,并提供了在配置文件和程序中设置压缩的...
- 在`collect`方法中,对输出的每个键值对进行分区操作,默认情况下使用`Hash`函数根据键来确定其所属的分区。 - 分区后的数据以三元组的形式`(key/value/partitionNum)`写入环形缓冲区中。 4. **溢写阶段** ...
3. **配置参数**:如`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`分别控制Map和Reduce Task的内存使用,`mapreduce.map.cpu.vcores`和`mapreduce.reduce.cpu.vcores`控制核心使用,以及`mapreduce....
【压缩包子文件的文件名称列表】:max.jar、raw.txt 在提供的压缩包中,有两个文件。"max.jar"是包含MapReduce作业的Java应用,已经编译打包成了JAR文件,用于在Hadoop集群上运行。而"raw.txt"则很可能是我们的输入...
5. Reduce阶段:Reduce阶段是MapReduce模型的第二阶段,负责将Map阶段的输出结果进行聚合和处理。Reduce阶段的输出结果是一个键值对序列。 6. 分片划分:MapReduce模型使用分片划分策略来将输入文件分割成小块。分...
总结来说,这个“中文分词MapReduce程序”是一个基于Java的分布式分词工具,利用MapReduce模型对大量中文文本进行高效分词处理,通过分词将原始文本转化为可供分析的词汇单元,并在Reduce阶段完成词频统计。...
次序排序是指在MapReduce中对输出结果进行排序的过程。在某些情况下,如进行聚合操作时,需要对中间结果进行排序才能得到正确的最终结果。 - **排序**:可以通过自定义比较器实现排序功能,确保数据按需排序。 ####...
针对给定的面试题,我们需要设计一个MapReduce程序来对三个文件(file1、file2、file3)中的数字进行整体升序排序。首先,我们需要理解输入格式,每个文件中每行都包含一个数字。我们的目标是合并这些数字,然后进行...
- **OutputFormat**: 定义了如何将MapReduce任务的结果写入输出文件。常见的OutputFormat包括`TextOutputFormat`、`SequenceFileOutputFormat`等。 - **RecordWriter**: 负责将MapReduce的输出结果写入文件系统。 #...
Shuffle阶段是MapReduce的核心,它将Map的输出进行整理,准备传递给Reduce任务。Shuffle分为map端和reduce端两个部分。在map端,map的输出首先被写入内存缓冲区,当缓冲区接近满时,数据会被溢写到磁盘,并根据预设...
MapReduce编程模型基于一个简单的思想:通过map阶段将原始数据分解为键值对,然后在reduce阶段对这些键值对进行聚合。以WordCount为例,map函数将每个文本行中的单词转化为(key, value)对,其中key是单词,value通常...
- **实现**:实现`reduce()`方法,在该方法中处理Mapper输出的键值对列表,对相同键的值进行合并、排序和聚合。 3. **Driver类** - **配置**:配置作业参数,如输入路径、输出路径、Mapper和Reducer类、序列化...
在Hadoop MapReduce中,可以通过配置`mapreduce.map.output.compress`和`mapreduce.reduce.output.compress`来开启输出数据的压缩。同时,需要指定相应的压缩编码器,例如`mapreduce.map.output.compress.codec`和`...