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
相关推荐
在map端,map的输出先写入缓存,当每次缓存快满时,由缓存“溢写”至磁盘,每次溢写都先进行“分区”,并对每个分区的数据进行“排序”和“合并”(可选)。一般会产生多个溢写的文件,这些文件会在map端先被“归并...
背景:map完产生了很多中间文件,被保存在磁盘上,然后等待reduce通过网络来拉取,如果开启map输出阶段压缩,可以减少Map和Reduce间的数据传输量。 1)开启hive中间传输数据压缩功能 set hive.exec.compress....
技术点26 在HDFS、MapReduce、Pig 和Hive 中使用数据压缩 技术点27 在MapReduce、Hive 和Pig 中处理可分割的LZOP 5.3 本章小结 6 诊断和优化性能问题 6.1 衡量MapReduce 和你的环境 6.1.1 提取作业统计...
4.4 本章小结5 优化HDFS 处理大数据的技术5.1 处理小文件技术点24 使用Avro 存储大量小文件5.2 通过压缩提高数据存储效率技术点25 选择合适的压缩解码器技术点26 在HDFS、MapReduce、Pig 和Hive 中使用...
在MapReduce中使用压缩 序列化 Writable接口 Writable类 实现定制的Writable类型 序列化框架 Avro 依据文件的数据结构 写入SequenceFile MapFile 第5章 MapReduce应用开发 配置API 合并多个源文件 可变的扩展 配置...
在MapReduce中使用压缩 序列化 Writable接口 Writable类 实现定制的Writable类型 序列化框架 Avro 依据文件的数据结构 写入SequenceFile MapFile 第5章 MapReduce应用开发 配置API 合并多个...
7.2 探查任务特定信息 7.3 划分为多个输出文件 7.4 以数据库作为输入输出 7.5 保持输出的顺序 7.6 小结 第8章 管理Hadoop 8.1 为实际应用设置特定参数值 8.2 系统体检 8.3 权限设置 8.4 配额管理 8.5 启用...
细则手册7.1 向任务传递作业定制的参数7.2 探查任务特定信息7.3 划分为多个输出文件7.4 以数据库作为输入输出7.5 保持输出的顺序7.6 小结第8 章 管理Hadoop8.1 为实际应用设置特定参数值8.2 系统体检8.3 权限设置8.4...
1357.2 探查任务特定信息 1377.3 划分为多个输出文件 1387.4 以数据库作为输入输出 1437.5 保持输出的顺序 1457.6 小结 146第8章 管理Hadoop 1478.1 为实际应用设置特定参数值 1478.2 系统体检 1498.3 权限设置 1518...
1296.3.3 使用压缩 1296.3.4 重用JVM 1326.3.5 根据猜测执行来运行 1326.3.6 代码重构与算法重写 1336.4 小结 134第7章 细则手册 1357.1 向任务传递作业定制的参数 1357.2 探查任务特定信息 1377.3...
100_join reduce端连接0 N1 |* R5 n* D8 C+ i 101_hadoop Namenode HA配置8 [( ^7 Q1 W' y3 q 102_avro串行化4 [! T( [, J# e5 h P' w' {% I 103_google pb串行化& S- V% x6 v) {( Y" W 104_hive安装-使用: r/ Q& x....