Hive压缩与配置

作者: 心_的方向 | 来源:发表于2016-11-07 19:47 被阅读1553次

    优点

    在Hadoop集群中,有大量的数据复制和移动操作,压缩过后可以减少文件的大小,从而可以减少磁盘和网络的I/O。

    压缩格式

    常见的有gzip、bzip2、lzo、snappy、lz4等压缩算法。一般来说,好的压缩算法都是在解压缩的时间和压缩率上有不同的权衡。比如说:snappy压缩算法虽然压缩率不高,但是解压缩的时间相对于前两个更短。在hadoop中的压缩格式需要支持分割(一个文件可以被压缩成几个文件,并且每个压缩文件可以单独解压),这样可以交给多个map任务处理。

    Hive的压缩配置

    **以配置snappy为例 **

    1. 因为Hive是以Hadoop框架为基础的,所以先要查看hadoop是否支持snappy压缩。
      使用下面的命令查看hadoop当前支持的压缩。可以发现默认情况下不支持snappy。
      [wulei@bigdata-00 hadoop-2.5.0]$ bin/hadoop checknative
      1.png
    2. 编译Snappy
      具体编译流程见:http://www.micmiu.com/bigdata/hadoop/hadoop-snappy-install-config/
    3. 检查是否编译成功


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


      4.png
    5. 在Hive中设置压缩
      因为有的hive语句是嵌套的,可以对hive的中间结果集也设置压缩
      hive.exec.compress.intermediate=true
      开启压缩
      mapreduce.map.output.compress=true
      配置压缩格式
      mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec
    6. 因为Hive底层用的mapreduce,也可以直接在hadoop中对mapred-site.xml进行配置
            <!-- 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>
    

    相关文章

      网友评论

        本文标题:Hive压缩与配置

        本文链接:https://www.haomeiwen.com/subject/ekbouttx.html