压缩格式
|
codec类
|
算法
|
扩展名
|
多文件
|
splitable
|
native
|
工具
|
---|---|---|---|---|---|---|---|
Gzip | GzipCode | deflate | .gz | 否 | 否 | 是 | gzip |
Bzip2 | Bzip2Code | bzip2 | .bz2 | 是 | 是 | 否 | bzip2 |
Lzo | LzopCodec | lzo | .lzo | 否 | 是 | 是 | lzop |
Snappy | SnappyCode | snappy | .snappy | 否 | 否 | 是 | 无 |
压缩格式
|
优点
|
缺点
|
使用场景
|
---|---|---|---|
Gzip | 1.压缩解压速度快,压缩率高,hadoop本身支持 2.处理压缩文件时方便,和处理文本一样 3.大部分linux 系统自带 Gzip 命令,使用方便 |
不支持切片 | 1.文件压缩后在130M以内 (一个块大小),都可以使用 GZip 压缩(因为Gzip唯一的缺点是不能切片) 2.不需要切片的情况下可以使用 |
Bzip2 | 1.压缩率高(高于Gzip) 2.可以切片 3.hadoop自带使用方便 |
压缩解压速度超级慢 | 1.不要求压缩速率,但是对压缩率有要求的情况下比如备份历史记录 ,备份文件 2.输出的文件较大,况较少(解压/压缩的情况较少) 3.对于单个文件 较大,又想压缩减少磁盘空间,并且兼容之前的应用程序的情况 |
Lzo | 1.压缩解压速度比较快 , 压缩率也可以 2.支持切片是hadoop 比较流行的压缩格式 3.可以在linux 下安装 lzo命令 使用方便 |
1.压缩率比Gzip低一些 2.hadoop 本身不支持,需要自己安装 3.使用Lzo 格式的文件时需要做一些特殊处理 |
1.压缩以后还大于 200M 的文件,且文件越大 Lzo 的优势越明显 2.四种压缩方式,只有BZip2,Gzip 支持切片,然后 BZip2 你懂的,速度贼慢,只能用于特定的场景,所以 Lzo 是比较经常用的 |
Snappy | 高压缩解压速度 , 压缩率还可以 | 1.不能切片 2.压缩率比Gzip小 3.hadoop本身不支持 需要安装 |
1.当Mapeduce的Map阶段输出的数据比较大的时候,作为Map到Reduce的中间数据的压缩格式 2.作为一个MapReduce作业的输出和另一个MapReduce的输入 |
通过对四种压缩格式的总结整理可以发现,在压缩速率上:Snappy>Gzip>Bzip2>Lzo,在压缩率上有:Bzip2>Gzip>Lzo>Snappy,在支持切片上只有Bzip2和Lzo是符合要求的。对于是否压缩数据以及使用哪种压缩格式对性能都具有一定的影响,一般具有以下几个原则:
(1)需要平衡压缩和解压缩数据所需的能力、读写数据所需的磁盘 IO,以及在网络中发送数据所需的网络带宽;
(2)如果数据已经压缩了,则不建议进行压缩;
(3)Gzip 压缩使用的 CPU 资源比 Snappy 或 Lzo更多,但可提供更高的压缩比。Gzip 通常是不常访问的冷数据的不错选择,而 Snappy 或 Lzo 则是更加适合经常访问的热数据。
(4)Bzip2 可以为某些文件类型生成比 Gzip 更多的压缩,但是压缩和解压缩时会在一定程度上影响速度。
压缩格式
|
codec类
|
算法
|
扩展名
|
多文件
|
splitable
|
native
|
工具
|
---|---|---|---|---|---|---|---|
Gzip | GzipCode | deflate | .gz | 否 | 否 | 是 | gzip |
Bzip2 | Bzip2Code | bzip2 | .bz2 | 是 | 是 | 否 | bzip2 |
Lzo | LzopCodec | lzo | .lzo | 否 | 是 | 是 | lzop |
Snappy | SnappyCode | snappy | .snappy | 否 | 否 | 是 | 无 |
压缩格式
|
优点
|
缺点
|
使用场景
|
---|---|---|---|
Gzip | 1.压缩解压速度快,压缩率高,hadoop本身支持 2.处理压缩文件时方便,和处理文本一样 3.大部分linux 系统自带 Gzip 命令,使用方便 |
不支持切片 | 1.文件压缩后在130M以内 (一个块大小),都可以使用 GZip 压缩(因为Gzip唯一的缺点是不能切片) 2.不需要切片的情况下可以使用 |
Bzip2 | 1.压缩率高(高于Gzip) 2.可以切片 3.hadoop自带使用方便 |
压缩解压速度超级慢 | 1.不要求压缩速率,但是对压缩率有要求的情况下比如备份历史记录 ,备份文件 2.输出的文件较大,况较少(解压/压缩的情况较少) 3.对于单个文件 较大,又想压缩减少磁盘空间,并且兼容之前的应用程序的情况 |
Lzo | 1.压缩解压速度比较快 , 压缩率也可以 2.支持切片是hadoop 比较流行的压缩格式 3.可以在linux 下安装 lzo命令 使用方便 |
1.压缩率比Gzip低一些 2.hadoop 本身不支持,需要自己安装 3.使用Lzo 格式的文件时需要做一些特殊处理 |
1.压缩以后还大于 200M 的文件,且文件越大 Lzo 的优势越明显 2.四种压缩方式,只有BZip2,Gzip 支持切片,然后 BZip2 你懂的,速度贼慢,只能用于特定的场景,所以 Lzo 是比较经常用的 |
Snappy | 高压缩解压速度 , 压缩率还可以 | 1.不能切片 2.压缩率比Gzip小 3.hadoop本身不支持 需要安装 |
1.当Mapeduce的Map阶段输出的数据比较大的时候,作为Map到Reduce的中间数据的压缩格式 2.作为一个MapReduce作业的输出和另一个MapReduce的输入 |
通过对四种压缩格式的总结整理可以发现,在压缩速率上:Snappy>Gzip>Bzip2>Lzo,在压缩率上有:Bzip2>Gzip>Lzo>Snappy,在支持切片上只有Bzip2和Lzo是符合要求的。对于是否压缩数据以及使用哪种压缩格式对性能都具有一定的影响,一般具有以下几个原则:
(1)需要平衡压缩和解压缩数据所需的能力、读写数据所需的磁盘 IO,以及在网络中发送数据所需的网络带宽;
(2)如果数据已经压缩了,则不建议进行压缩;
(3)Gzip 压缩使用的 CPU 资源比 Snappy 或 Lzo更多,但可提供更高的压缩比。Gzip 通常是不常访问的冷数据的不错选择,而 Snappy 或 Lzo 则是更加适合经常访问的热数据。
(4)Bzip2 可以为某些文件类型生成比 Gzip 更多的压缩,但是压缩和解压缩时会在一定程度上影响速度。