乐趣区

关于hadoop:Hadoop-入门笔记七-Hadoop-文件压缩格式

一. 背景

在 Hadoop 中,个别存储着十分大的文件,以及在存储 HDFS 块或运行 MapReduce 工作时,Hadoop 集群中节点之间的存在大量数据传输。如果条件容许时,尽量减少文件大小,这将有助于缩小存储需要以及缩小网络上的数据传输。

二. Hadoop 反对的压缩算法

Haodop 对文件压缩均实现 org.apache.hadoop.io.compress.CompressionCodec 接口,所有的实现类都在 org.apache.hadoop.io.compress 包下

1. 压缩算法比拟

有不少的压缩算法能够利用到 Hadoop 中,但不同压缩算法有各自的特点。

存放数据到 HDFS 中,能够抉择指定的压缩形式,在 MapReduce 程序读取时,会依据扩展名主动解压。例如:如果文件扩大名为.snappy,Hadoop 框架将主动应用 SnappyCodec 解压缩文件。

整体排序如下:
Snappy < LZ4 < LZO < GZIP < BZIP2,但压缩比越高,压缩的工夫也会更长。以下是局部参考数据

2. HDFS 压缩如何抉择

既然压缩可能节俭空间、而且能够晋升 IO 效率,那么 是否将所有数据都以压缩格局存储在 HDFS 中呢?例如:bzip2,而且文件是反对切分的。

  • 如果文件是不可切分的,只有一个 CPU 在解决所有的文件,其余的 CPU 都是闲暇的。如果 HDFS 中的 block 和文件大小差不多还好,一个文件、一个块、一个 CPU。如果是一个很大的文件就会呈现问题了
  • bzip2 在压缩和解压缩数据方面实际上均匀比 Gzip 差 3 倍,这对性能是有肯定的影响的。如果咱们须要频繁地查问数据,数据压缩肯定会影响查问效率
  • 如果不关怀查问性能(没有任何 SLA)并且很少抉择此数据,则 bzip2 可能是不错的抉择。最好是对本人的数据进行基准测试,而后再做决定。
退出移动版