hadoop文件压缩
需求
文件压缩对于大数据量的分布式存储系统而言是必须的,它带来有两个好处:
- 1.减少文件所需的空间
- 2.加快网络或磁盘间的传输速度
但是也有不好地方:
- 1.增大了CPU的负载
根据我们的作业性质选择是否需要压缩
压缩分类
Compression常见分为两大类
- lossless: 无丢失的压缩方式
- lossy: 有丢失的压缩方式,常用于视频、图片
下面我们提到的压缩方式都是无丢失的压缩方式
压缩格式
Hadoop对前面三种有默认集成,有就是说Hadoop支持DEFLATE、Gzip、bzip2三种压缩格式。而后面三种Hadoop没有支持,要用的话要自己去官网下载相应的源码去编译加入到Hadoop才能用
压缩格式 | 工具 | 算法 | 文件扩展名 | 是否可拆分 |
---|---|---|---|---|
gzip | gzip | default | .gz | × |
bzip2 | bzip2 | bzip2 | .bz2 | √ |
LZO | LZO | LZO | .lzo | √(YES if indexed) |
LZ4 | LZ4 | LZ4 | .lz4 | × |
Snappy | N/A | Snappy | .snappy | × |
gzip
优点:
- 压缩率比较高,
- 解压速度也比较快
- hadoop本身支持,linux系统都自带gzip命令
缺点:
- 不支持split
bzip2
优点:
- 压缩比较高
- 支持split
- Hadoop本身支持,但不支持native
缺点:
- 压缩/解压速度比较慢
LZO
优点
- 压缩/解压速度也比较快,合理的压缩率
- 支持分片,是Hadoop中流行的压缩格式
- 支持Hadoop native库。
缺点
- 压缩率比gzip要低一些
- Hadoop本身不支持,需要安装
snapp
优点:
- 高速压缩速度和合理的压缩率
- 支持hadoop native库
缺点
- 不支持split
- 压缩率比gzip要低
- hadoop本身不支持,需要安装
- linux系统下没有对应的命令