MapReduce进行数据压缩
压缩方式有snappy、lzo、bzip2等
为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器
压缩格式 | 对应的编码/解码器 |
---|---|
DEFLATE | org.apache.hadoop.io.compress.DefaultCodec |
gzip | org.apache.hadoop.io.compress.GzipCodec |
bzip2 | org.apache.hadoop.io.compress.BZip2Codec |
LZO | com.hadoop.compression.lzo.LzopCodec |
Snappy | org.apache.hadoop.io.compress.SnappyCodec |
压缩性能的比较:
压缩算法 | 原始文件大小 | 压缩文件大小 | 压缩速度 | 解压速度 |
---|---|---|---|---|
gzip | 8.3GB | 1.8GB | 17.5MB/s | 58MB/s |
bzip2 | 8.3GB | 1.1GB | 2.4MB/s | 9.5MB/s |
LZO | 8.3GB | 2.9GB | 49.3MB/s | 74.6MB/s |
MapReduce的主要压缩过程主要有三个阶段
map之前:要考虑数据量的大小,数据量小的,就不需要考虑过多的切片,主要追求的是快速,可以选择压缩方式snappy或者lzo。数据量大的话,考虑到切片,可以选择lzo或者bzip2
map之后:map之后的数据要经历reduce聚合,主要考虑速度,所以选择snappy或者lzo
reduce之后:需要看具体的需求,类似于持久保存,那就需要看数据量的大小,数据量小的,就不需要考虑过多的切片,主要追求的是快速,可以选择压缩方式snappy或者lzo。数据量大的话,考虑到切片,可以选择lzo或者bzip2