hadoop数据压缩的选择和比较
hadoop数据压缩的选择和比较
MR支持的压缩编码
为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器:
压缩性能的比较:
压缩算法 | 原始文件大小 | 压缩文件大小 | 压缩速度 | 解压速度 |
---|---|---|---|---|
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 |
自我总结:
只有bzip2和LZO这两种压缩格式是支持切片的,其余的都不支持切片。另外LZO需要安装,其余的都不需要安装。bzip2是“慢工出细活(该压缩方式表示压缩率最高,但是压缩和解压缩的速度的最慢的)”,snappy是压缩和解压缩的速度最快的(250和500M),但是压缩率不高。
压缩方式的选择: 在map和reduce中的map输出多采用snappy的方式,因为该方式的压缩和解压缩的速度都是最快的,不需要考虑其是否能够切片,压缩比如何,最重要的是速度要快,因为在shuffle过程本就是耗费时间的过程,采用压缩的方式,需要让用户感觉到即实现了节省磁盘空间的特点又极小的拖慢shuffle的速度。
在reduce输出阶段:在该阶段很可能落盘的数据需要再次执行mapreduce,这个时候就需要考虑到切片问题了,于是我们在该阶段的压缩通常选择支持切片的LZO格式,即支持切片,同时比bzip2的压缩速度要快很多。