hive 压缩编码

文章目录

  • 1. hadoop 压缩编码
    • 1.1 MR支持的压缩编码
    • 2、编码/解码器
    • 3、压缩性能的比较
    • 4、压缩配置参数
  • 2. hive压缩编码
    • 2.1 如何查看hive支持的压缩
    • 2.1 hive编码的选择
    • 2.2 配置

1. hadoop 压缩编码

1.1 MR支持的压缩编码

压缩格式 工具 算法 文件扩展名 是否可切分
DEFAULT DEFAULT .deflate
Gzip gzip DEFAULT .gz
bzip2 bzip2 bzip2 .bz2
LZO lzop LZO .lzo
LZ4 LZ4 .lz4
Snappy Snappy .snappy

2、编码/解码器

为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示

压缩格式 对应的编码/解码器
DEFLATE org.apache.hadoop.io.compress.DefaultCodec
gzip org.apache.hadoop.io.compress.GzipCodec
bzip2 org.apache.hadoop.io.compress.BZip2Codec
LZO com.hadoop.compression.lzo.LzopCodec
LZ4 org.apache.hadoop.io.compress.Lz4Codec
Snappy org.apache.hadoop.io.compress.SnappyCodec

3、压缩性能的比较

压缩算法 原始文件大小 压缩文件大小 压缩速度 解压速度
gzip 8.3GB 1.8GB 17.5MB/s 58MB/s
bzip2 8.3GB 1.1GB 2.4MB/s 9.5MB/s
LZO 8.3GB 2.9GB 49.3MB/s 74.6MB/s

http://google.github.io/snappy/
在64位模式的Core i7处理器的单核上,Snappy压缩大约250 MB /秒或更高,并以大约500 MB /秒或更高的速度进行解压缩。

4、压缩配置参数

要在Hadoop中启用压缩,可以配置如下参数(mapred-site.xml文件中)

参数 默认值 阶段 建议
io.compression.codecs(在core-site.xml中配置) org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.Lz4Codec 输入压缩 Hadoop使用文件扩展名判断是否支持某种编解码器
mapreduce.map.output.compress false mapper输出 这个参数设为true启用压缩
mapreduce.map.output.compress.codec org.apache.hadoop.io.compress.DefaultCodec mapper输出 使用LZO、LZ4或snappy编解码器在此阶段压缩数据
mapreduce.output.fileoutputformat.compress false reducer输出 这个参数设为true启用压缩
mapreduce.output.fileoutputformat.compress.codec org.apache.hadoop.io.compress. DefaultCodec reducer输出 使用标准工具或者编解码器,如gzip和bzip2
mapreduce.output.fileoutputformat.compress.type RECORD reducer输出 SequenceFile输出使用的压缩类型:NONE和BLOCK

2. hive压缩编码

2.1 如何查看hive支持的压缩

查看集群的支持的压缩算法.

lcc@lcc ~$ hive -e "set io.compression.codecs"

返回支持的压缩算法

io.compression.codecs=org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.DeflateCodec,
org.apache.hadoop.io.compress.SnappyCodec,
org.apache.hadoop.io.compress.Lz4Codec

我的返回这个,应该返回空

序号 压缩格式 算法 多文件 可分割性 工具 工具压缩后扩展名
1 DEFLATE DEFLATE .deflate
2 Gzip DEFLATE gzip .gz
3 bzip2 bzip2 bzip2 .bz2
4 LZO LZO lzop .lzo
5 LZ4 ??? ?? ?? ??? ???
6 Snappy ??? ?? ?? ??? ???
7 ZLIB ??? ?? ?? ??? ???
8 ZIP DEFLATE 是,在文件范围内 zip .zip

2.1 hive编码的选择

选择合适的编解码器
对数据做压缩,可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,但对数据做压缩和解压缩总会增加CPU的开销,故最好对那些I/O密集型的作业使用数据压缩——这样的作业会有富余的CPU资源,或者对那些磁盘空间不富裕的系统。

2.2 配置

打开Hive(即由mappe产生的)中间数据文件的压缩功能
HiveQL语句最终会被编译成Hadoop的Mapreduce job,开启Hive的中间数据压缩功能,就是在MapReduce的shuffle阶段对mapper产生的中间结果数据压缩。在这个阶段,优先选择一个低CPU开销的算法。
可以通过参数hive.exec.compress.intermediate来开启和禁用该功能,默认情况下该值值为false,将之设置为true为激活中间数据压缩功能:

  
    hive.exec.compress.intermediate  
    true  
    This controls whether intermediate files  produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*  
  

具体的压缩算法参数配置,这是一个hadoop的配置参数,可以在Hadoop的$HADOOP_HOME/conf/marred-site.xml$HADOOP_HOME/conf/hive-site.xml配置文件中。SnappyCodec比较适合在这种场景中编解码器,该算法会带来很好的压缩性能和较低的CPU开销:

  
    mapred.map.output.compression.codec  
    org.apache.hadoop.io.compress.SnappyCodec  
    This controls whether intermediate files  produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*  
  

最Hive的数据文件压缩
用户可以对最终生成的Hive表的数据通常也需要压缩。参数hive.exec.compress.output控制这一功能的激活与禁用。用户可以通过节本来打开这个功能,同样也可以在XML配置文件中将该功能配置成全局变量:

  
    hive.exec.compress.output  
    true  
    This controls whether the final outpus of a query(  to a local/hdfs file or a Hive table) is compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*  
  

将hive.exec.compress.output参数设置成true后,然后选择一个合适的编解码器,如选择SnappyCodec:

  
    mapred.output.compression.codec  
    org.apache.hadoop.io.compress.SnappyCodec  
  

好文章:

https://blog.csdn.net/Wflowerd/article/details/80376036

你可能感兴趣的:(大数据-hive)