Hive之Hive压缩

压缩配置:

  map/reduce 输出压缩(一般采用序列化文件存储)

set hive.exec.compress.output=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

set mapred.output.compression.type=BLOCK;

 

任务中间压缩

set hive.exec.compress.intermediate=true;

set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;(常用)

set hive.intermediate.compression.type=BLOCK;

 

1、是否选择文件压缩:

在hadoop作业执行过程中,job执行速度更多的是局限于I/O,而不是受制于CPU。如果是这样,通过文件压缩可以提高hadoop性能。然而,如果作业的执行速度受限于CPU的性能,呢么压缩文件可能就不合适,因为文件的压缩和解压会花费掉较多的时间。当然确定适合集群最优配置的最好方式是通过实验测试,然后衡量结果。

2、压缩格式

GZip 和 BZip2压缩格式是所有最近的hadoop版本支持的,而且linux本地的库也支持这种格式的压缩和解压缩。

Snappy是最近添加的压缩格式,可以自己添加这种压缩格式

LZO是经常用到的压缩格式

GZip 和 BZip2压缩可以保证最小的压缩文件,但是过于消耗时间;Snappy和LZO压缩和解压缩很快,但是压缩的文件较大。所以如何选择压缩格式,需要根据具体的需求决定。(I/O,CPU)

BZip2 and LZO支持压缩文件分割

3、中间压缩

 

中间压缩就是处理作业map任务和reduce任务之间的数据,对于中间压缩,最好选择一个节省CPU耗时的压缩方式

<property>

         <name>hive.exec.compress.intermediate</name>

         <value>true</value>

         <description> This controls whether intermediate files produced by Hive between

                  multiple map-reduce jobs are compressed. The compression codec and other options

                  are determined from hadoop config variables mapred.output.compress* </description>

</property>

 

hadoop压缩有一个默认的压缩格式,当然可以通过修改mapred.map.output.compression.codec属性,使用新的压缩格式,这个变量可以在

mapred-site.xml 中设置或者在 hive-site.xml文件。 SnappyCodec 是一个较好的压缩格式,CPU消耗较低。

<property>

         <name>mapred.map.output.compression.codec</name>

         <value>org.apache.hadoop.io.compress.SnappyCodec</value>

         <description> This controls whether intermediate files produced by Hive

         between multiple map-reduce jobs are compressed. The compression codec

         and other options are determined from hadoop config variables

         mapred.output.compress* </description>

</property>

上一篇:简明条件随机场CRF介绍 | 附带纯Keras实现


下一篇:Spark之RDD的transformation&action(Java&Scala实现)