• hive优化之开启压缩功能


    1、开启hive作业mapreduce任务中间压缩功能:

    对于数据进行压缩可以减少job中map和reduce task间的数据传输量。对于中间数据压缩,选择一个低cpu开销编/解码器要不选择一个压缩率高的编解码器重要很多。hadoop压缩的默认编解码器是DefaultCodec,可以通过设置参数mapred.map.output.compression.codec来进行相应调整,这是一个hadoop配置项,可以在hadoop mapred-site.xml文件更改或hive-site.xml文件进行更改。SnappyCodec是一个比较好的编解码器,拥有低cpu开销和好的压缩率。

    开启中间数据压缩需要设置参数:

    hive.exec.compress.intermediate的值为true;

    mapred.map.output.compression.codec为org.apache.hadoop.io.compress.SnappyCodec:

            <property>

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

                    <value>true</value>

            </property>

        <property>

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

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

            </property>

    注意:hadoop开启中间压缩参数为mapred.compress.map.output。

    2、开启hive作业最终输出结果压缩功能:

    当hive将输出写入到表中时,输出内容同样可以进行压缩。通过设置属性hive.exec.compress.output为true控制输出结果压缩。用户可能需要保持默认设置false,然后通过在查询语句或执行脚本中设置这个值为true启用输出结果压缩功能。当参数hive.exec.compress.output设置为true时,需要为其制定一个编解码器,对于输出文件使用Gzip是个不错的选择,因为可以大大减小压缩文件的大小。但是,需要注意的是Gzip压缩文件对于后边mapreduce job而言是不可分割的。

    启用结果压缩设置参数:

    set hive.exec.compress.output=true;

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

    可能的一个hive作业的设置如下:

    set mapred.max.split.size=100000000;
    set mapred.min.split.size.per.node=100000000;
    set mapred.min.split.size.per.rack=100000000;
    set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

    set hive.exec.reducers.bytes.per.reducer=1000000000;

    set hive.exec.reducers.max=256;

    set hive.merge.mapfiles=true;

    set hive.merge.mapredfiles =ture;

    set hive.merge.size.per.task=256000000;

    set hive.merge.smallfiles.avgsize=16000000;

    set hive.exec.compress.intermediate=true;

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

    set hive.exec.compress.output=true;

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

    select deptno,count(1) from emp group by deptno;

  • 相关阅读:
    【Hadoop报错】The directory item limit is exceeded: limit=1048576 items=1048576
    【Error】mysql的error.log中ranges: 268 max_threads: 4 split: 268 depth: 2是什么意思?
    【Hadoop】Hadoop集群组件默认端口
    【Python】用Python把从mysql统计的结果数据转成表格形式的图片并推送到钉钉群
    微信小程序 服务端shiro用户验证,偶然会出现验证失败的问题。
    微信小程序 数组复制 改变原数组 新数组也会自动变化
    Controller 在加入aop 后,@Autowired注入值为null
    gitblit仓库
    mybatis plus 增加数据后 返回主键id
    Shiro 访问 Swagger2报404 及 放行Swagger2
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/7601249.html
Copyright © 2020-2023  润新知