压缩在Hadoop中的使用

引言

1、Use Compressed Map Input                                               				// Map使用压缩输入。
Mapreduce jobs read input from HDFS.									  				// Mapreduce作业从HDFS读取输入。
Compress if input data is large.This will reduce disk read cost. 		                // 如果输入数据巨大使用压缩。将减少磁盘读取的成本。
Compress with splittable algorithms like Bzip2.								            // 使用类似bzip2的可分割算法进行压缩。
Or use compression with splittable file structures such as Sequence Files,RC file etc.  //或者使用可拆分文件结构的压缩,如序列文件、RC文件等。

2、Compress Intermediate Data                                                           // 压缩中间数据
Map output is written to disk(spill) and transferred accross the network.               // Map输出被写入磁盘(溢出)并通过网络传输。
Always use compression to reduce both disk write,and network transfer load.             // 总是使用压缩来减少磁盘写入和网络传输负载。
Beneficial in performace point of view even if input and output is uncompressed.        // 即使输入和输出是未压缩的,也有利于性能
Use faster codecs such as Snappy,LZO.					                                // 使用更快的编解码器,如Snappy、LZO。

3、Compress Reducer Output 															    // 压缩reducer输出
Mapreduce output used for both archiving or chaining mapreduce jobs.                    // Mapreduce输出使用archiving或者chaining的Mapreduce作业。
Use compression to reduce disk space for archiving.                                     // 使用压缩来减少用于存档的磁盘空间。
Compression is also beneficial for chaining jobs- 
-especially with limited disk throughput resource.                                      // 压缩也有利于chaining作业,尤其是在磁盘吞吐量资源有限的情况下。
Use compression methods with higher compress ratio to save more disk space.             // 使用压缩比更高的压缩方法来节省更多的磁盘空间。

压缩的好处

  • 节省存储空间
  • 加快网络传输和磁盘读存速度

压缩分类

  • lossless > 无丢失的压缩方式
  • lossy > 有丢失的压缩方式,常用于视频及图片

压缩格式

Compression format Tool Algorithm File extention Splittable
gzip gzip DEFLATE .gz No
bzip2 bzip2 bzip2 .bz2 Yes
LZO lzop LZO .lzo Yes if indexed
Snappy N/A Snappy .snappy No

压缩率

  • 压缩大小对比
    Snappy > LZ4 > LZO > GZIP > BZIP2

  • 压缩时间对比
    BZIP2 > GZIP > LZO > LZ4 > Snappy

gzip

  1. 优点
  • 压缩率比较高
  • 解压速度快
  • hadoop本身支持
  1. 缺点
  • 不支持split
bzip2

  1. 优点
  • 压缩/解压速度也比较快,合理的压缩率
  • 支持分片,是Hadoop中流行的压缩格式
  • 支持Hadoop native库
  1. 缺点
  • 压缩率比gzip要低一些
  • Hadoop本身不支持,需要安装
Snappy

  1. 优点
  • 高速压缩速度和合理的压缩率
  • 支持hadoop native库
  1. 缺点
  • 不支持split
  • 压缩率比gzip要低
  • hadoop本身不支持,需要安装
  • linux系统下没有对应的命令

各压缩格式使用
Zlib	org.apache.hadoop.ip.compress.DefaultCodec
Gzip	org.apache.hadoop.ip.compress.GzipCodec
Bzip2	org.apache.hadoop.ip.compress.Bzip2Codec
Lzo		com.hadoop.compression.lzo.LzoCodec
Lz4		org.apache.hadoop.ip.compress.Lz4Codec
Snappy	org.apache.hadoop.ip.compress.SnappyCodec

在Hadoop中配置示例
  • core-site.xml
<property>
	<name>io.compression.codecs</name>
	<value>
		org.apache.hadoop.io.compress.GzipCodec,
		org.apache.hadoop.io.compress.DefaultCodec,
		org.apache.hadoop.ip.compress.BZipCodec,
	</value>
</property>

  • mapred-site.xml
<property>
	<name>mapreduce.output.fileoutputformat.compress</name>
	<value>true</value>
</property>
<property>
	<name>maoreduce.output.fileoutputformat.compress.codec</name>
	<!-- 根据不同压缩格式更改 -->
	<value>org.apache.hadoop.io.compress.BZip2Codec</value>
</property>

猜你喜欢

转载自blog.csdn.net/aubekpan/article/details/86320390
今日推荐