zoukankan      html  css  js  c++  java
  • Hive 性能调优

    • 避免执行MR 
      • select * or select field1,field2
      • limit 10
      • where语句中只有分区字段或该表的本地字段
      • 使用本地set hive.exec.mode.local.auto=true;
    • EXPLAIN的使用 
      hive对sql的查询计划信息解析 
      EXPLAIN SELECT COUNT(1) FROM T_TABLE; 
      EXPLAIN EXTENDED SELECT COUNT(1) FROM T_TABLE;(更为详细)
    • 本地MR(提高本地资源利用率,一般在测试时使用) 
      • 本地模式设置 
        set mapred.job.tracker=local; 
        set hive.exec.mode.local.auto=true; (开启自动本地模式) 
        set hive.exec.mode.local.auto.inputbytes.max(默认134217728,设置local mr的最大输入数据量,当输入数据量小于这个值的时候会采用local mr的方式) 
        set hive.exec.mode.local.auto.input.files.max (默认是4, 
        设置local mr的最大输入文件个数,当输入文件个数小于这个值的时候会采用local mr的方式)
    • 开启并行计算 
      set hive.exec.parallel=true; (增加集群利用率) 

    • 设置严格模式 
      set hive.mapred.mode=strict | nostrict;

      strict可以禁止三种类型的查询

      1、分区表必须使用 where 分区条件过滤 
      这里写图片描述

      2、Order by语句必须使用 limit 
      这里写图片描述

      3、限制笛卡尔积查询

    • 调整mapper和reducer的数量 
      • 太多map导致启动产生过多开销
      • 按照输入数据量大小确定reducer数目, 
        • set mapred.reduce.tasks= 默认3
        • dfs -count /分区目录/*
        • hive.exec.reducers.max设置阻止资源过度消耗
      • JVM重用

        set mapred.job.reuse.jvm.num.task=10 (会一直占用task槽,占用内存)

      • 排序语句

        order by : 全局排序 
        sort    by : 是单reduce排序 
        distribute by : 分区字段排序;

        sort by distribute by 配合使用(相同数据会被分发到同一个reduce上,类似order by) 
        select id from t_bucket distribute by id sort by id desc limit 10; 
        cluster by 
              可以确保类似的数据的分发到同一个reduce task中,并且保证数据有序防止所有的数据分发到同一个reduce上,导致整体的job时间延长

        cluster by语句的等价语句 
        distribute by idsort by id == cluster by

      • Map-side聚合

        set hive.map.aggr=true; 
        这个设置可以将顶层的聚合操作放在Map阶段执行,从而减轻清洗阶段数据传输和Reduce阶段的执行时间,提升总体性能。

        该设置会消耗更多的内存

  • 相关阅读:
    20172327 2018-2019-1 《程序设计与数据结构》实验三:查找与排序
    团队作业第二周
    需求规格说明书
    广度优先遍历
    团队作业第一周
    20172327 2018-2019-1 《程序设计与数据结构》第九周学习总结
    20172327 2018-2019-1 《程序设计与数据结构》实验二:树实验报告
    20172327 2018-2019-1 《程序设计与数据结构》第八周学习总结
    20172327 2018-2019-1 《程序设计与数据结构》第七周学习总结
    20172327 2018-2019-1 《程序设计与数据结构》第六周学习总结
  • 原文地址:https://www.cnblogs.com/0xcafedaddy/p/7910299.html
Copyright © 2011-2022 走看看