关于hive数据压缩

一、优缺点

        优点: 1,减少存储磁盘空间,降低单节点的磁盘IO。

                    2,由于压缩后的数据占用的带宽更少,因此可以加快数据在Hadoop集群流动的速度。例如在不同节点创建3个replica的阶段,或是shuffle阶段。

        缺点: 需要花费额外的时间/CPU做压缩和解压缩计算

二、几种常见的压缩对比

 三、压缩分析

        首先说明mapreduce哪些过程可以设置压缩:需要分析处理的数据在进入map前可以压缩,然后解压处理,map处理完成后的输出可以压缩,这样可以减少网络I/O(reduce通常和map不在同一节点上),reduce拷贝压缩的数据后进行解压,处理完成后可以压缩存储在hdfs上,以减少磁盘占用量。

 3.1设置启用压缩:

有两种方式可以设置数据压缩:

方法一:在.sql脚本设置如下参数

set hive.exec.compress.intermediate=true --启用中间数据压缩
SET hive.exec.compress.output=true; -- 启用最终数据输出压缩
set mapreduce.output.fileoutputformat.compress=true; --启用reduce输出压缩
set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec --设置reduce输出压缩格式
set mapreduce.map.output.compress=true; --启用map输入压缩
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;-- 设置map输出压缩格式

方法二:通过设置hive-site.xml文件设置启用中间数据压缩,配置文件如下:

       
       <property>
                <name>hive.exec.compress.intermediate</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.exec.compress.output</name>
                <value>true</value>
        </property>
 <!-- map输出压缩 -->
        <property>
                <name>mapreduce.map.output.compress</name>
                <value>true</value>
        </property>
        <property>
                <name>mapreduce.map.output.compress.codec</name>
                <value>org.apache.hadoop.io.compress.SnappyCodec</value>
        </property>
        <!-- reduce输出压缩 -->
        <property>
                <name>mapreduce.output.fileoutputformat.compress</name>
                <value>true</value>
        </property>
        <property>
                <name>mapreduce.output.fileoutputformat.compress.codec</name>
                <value>org.apache.hadoop.io.compress.SnappyCodec</value>
        </property>

 

posted @ 2017-12-19 14:44  一醉方休  阅读(2611)  评论(1编辑  收藏  举报