压缩考虑
第一
压缩率
第二
压缩/解压缩时间(cpu开销)
第三
是否支持切分
对以上三个问题说明
BZip2的压缩率最高,消耗的cpu资源也最多,支持分割
Gzip 的压缩率和压缩速度都还可以,如果磁盘利用率和和I/O开销都要考虑的话,是不错的选择,但是不支持分割
LZO和snappy压缩率比请两个要小,但是速度很快 其中Snappy不支持分割,lzo支持分割
(对应分割,如果支持分割,那么mapreduce作业,map任务就可以进行并行处理文件,如果不支持分割,文件有特别大,map任务只能从文件头读到尾,整改过程只能有一个map任务,效率肯定不好,不能利用机器的并行性。特别注意不可分割指的并不是hdfs上只能有一个块,而是指mapreduce作业的输入分片不能按块划分分片,只能一直从头读到尾,因而虽然有多个块,但仍然只能有一个map任务)
1.中间压缩
Set hive.exec.compress.intermediate=true
2.输出结果压缩
Set hive.exec.compress.output=true
3.sequence file 存储格式压缩
三种级别 none record block,这个参数hadoop也有
Maped.output.compression.type
可以和其他压缩格式一起使用,同时又支持分割,只对于reduce产生的较大文件是一个很好的处理办法,即可节省
磁盘空间,又可以对下个作业的输入提供可分割的map
4压缩编/解码器
Org.apache.hadoop.io.compress.GzipCodec
Org.apache.hadoop.io.compress.DefaultCodec
Org.apache.hadoop.io.compress.Bzip2Codec
Org.apache.hadoop.io.compress.SnappyCodec
Set mapred.output.compression.codec=上述四种之一