引言
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
- 优点
- 压缩率比较高
- 解压速度快
- hadoop本身支持
- 缺点
- 不支持split
bzip2
- 优点
- 压缩/解压速度也比较快,合理的压缩率
- 支持分片,是Hadoop中流行的压缩格式
- 支持Hadoop native库
- 缺点
- 压缩率比gzip要低一些
- Hadoop本身不支持,需要安装
Snappy
- 优点
- 高速压缩速度和合理的压缩率
- 支持hadoop native库
- 缺点
- 不支持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>