Debian Hadoop 压缩算法选择建议
快速选择建议
常见压缩格式对比
| 格式 | 压缩率 | 压缩/解压速度 | 是否可分割 | 典型场景 | 关键要点 |
|---|---|---|---|---|---|
| Gzip(Zlib/DEFLATE) | 高 | 中/中 | 否 | 冷数据归档、读多写少 | 通用、兼容性好;不可分割,大文件不利于并发 |
| Bzip2 | 很高 | 慢/慢 | 是 | 高压缩率归档、可并行读取 | 压缩/解压耗时;适合不追求时效的存储 |
| LZO | 中 | 快/快 | 是(需索引) | 大文本并行处理 | 需安装 LZO 库并为文件建索引 |
| Snappy | 中 | 很快/很快 | 否 | 中间数据、流式/实时处理 | CPU 开销低、生态广泛 |
| LZ4 | 低-中 | 极快/极快 | 否 | 极致吞吐与低时延 | 解压速度优势明显,压缩率较低 |
| Zstandard(Zstd) | 中-高 | 快/快 | 视实现而定 | 速度+压缩率平衡 | 提供多级别压缩;确认编解码器可用 |
说明:压缩率与速度通常呈反向关系;在 Hadoop 中,是否“可分割”直接影响 Map/Reduce 的并行度与作业性能。
在 Debian 上的部署与配置要点
sudo apt-get install libsnappy-devsudo apt-get install liblzo2-devsudo apt-get install zlib1g-dev<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.Lz4Codec</value>
</property>
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<property>
<name>mapreduce.output.fileoutputformat.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.output.fileoutputformat.compress.codec</name>
<value>org.apache.hadoop.io.compress.GzipCodec</value>
</property>
hadoop checknative,确保 Snappy/LZO/LZ4/Zlib/Bzip2 等库加载成功。LzoIndexer)后才可分割读取。按场景的配置示例
mapreduce.map.output.compress=true,mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodecmapreduce.output.fileoutputformat.compress=true,mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec实践注意事项
hadoop checknative 与官方文档确认。