压缩的优势:可以最小化所需要的磁盘存储空间,以及减小磁盘和网络I/O操作。
缺点:压缩过程和解压过程会增加CPU开销。
二、压缩/解码器
1、压缩方案
(1)GZIP和BZip2(内置)
(2)Snappy
(3)LZO
2、压缩方法比较:
(1)BZip2压缩率最高,但是同时需要消耗最多的CPU开销。
(2)GZip是压缩率和压缩/解压缩速度上的下一个选择
(3)LZO和Snappy压缩率相比前面的2种要小但是压缩/解压缩速度要快,特别时解压过程。
3、压缩格式的文件
压缩格式的文件是否可分割时一个需要考虑的因素。MapReduce需要将非常大的输入文件分割成多个划分(通常一个文件快对应一个划分,也就是64Mb的倍数),其中每个划分会被分发到一个单独的map进程中。只有当Hadoop知道文件中记录的边界时才可以进行这样的分割。对于文本文件,每一行都是一条记录,但是GZip和Snappy将这些边界信息掩盖掉了。BZip2和LZO提供了快(BLOCK)级别的压缩,也就是每个快中都含有完整的记录信息。
4、开启中间压缩
对中间数据进行压缩可以减少job中map和reduce task间的数据传输量。对于中间数据压缩,选择一个低CPU开销的编/解码器要比选择一个压缩率高的编/解码器要重要得多。
开启中间压缩:
<property>
<name>hive.exec.compress.intermediate</n