zoukankan      html  css  js  c++  java
  • HiveQL:调优

    1.使用EXPLAN/EXPLAN EXTENDED查看执行计划

    -- 待补充

    2.本地模式

    /*
    有时候hive查询数据量是非常小的,这种情况下,为查询触发执行任务对的时间消耗有可能比实际job执行时间要多得多。对于大多数这种情况,Hive可以通过本地模式在单台机器上(或某些时候在单个进程中)处理所有的任务,这样对于小数据集,执行时间明显被缩短。
    */
    set mapred.tmp.dir = local

    3.并行执行

    /*Hive会将一个查询转化成一个或者多个阶段。默认情况下,Hive一次只会执行一个阶段。不过,某个特定的的job可能包含众多的阶段,而这些阶段并非是完全相互依赖的,也就是说有些阶段是可以并行执行的,这样坑使得整个job的执行时间缩短。
    */
    -- 设置参数
    hive.exec.parallel = true
    SET hive.exec.parallel.thread.number=16;

    4.严格模式

    /*
    Hive提供了一个严格模式,可以防止用户执行那些可能产生一些不合适的查询
    */
    -- 设置参数
    hive.mapred.mode = true
    /*
    可以进制三类查询
    1.对于分区表,除非WHERE语句中含有分区字段过滤条件来限制数据范围,否则不允许执行。避免全表扫描占用过大资源
    2.对于使用ORDER BY语句的查询,要求必须使用LIMIT语句,因为ORDER BY为了执行排序过程会将所有的结果数据分发到同一个reducer中进行处理,强制要求用户增加整个LIMIT语句可以防止reducer而外执行很长一段时间。
    3.限制笛卡尔积查询。对于关系行数据库,用户在JOIN时不用ON用WHERE语句,执行优化器会会将WHERE转化成ON,但是hive不会执行这种优化
    */

    5.调整mapper和reducer个数

    /*
    Hive是按照输入数据的数据量大小来确定reducer个数的,我们可以通过dfs -count命令来计算输入量的大小
    */
    hive.exec.reducers.bytes.per.reducer --默认是为1GB
    mapred.reduce.tasks -- 可以设置reduce task的大小,但是不推荐设置确定的,会导致会变慢。
    hive.exec.reducers.max -- 在共享集群上处理大任务时,为了控制资源控制情况,可以阻止某个查询消耗太多的reducer资源。

    6.JVM重用

    -- 待补充

    7.动态分区调整

    -- 设置参数
    hive.exec.dynamic.partition.mode = strict -- 严格模式时,至少有一个为静态分区
    hive.exec.max.dynamic.partitions -- 限制最大的动态分区的个数
    hive.exec.max.dynamic.partitions.pernode -- 

    8.推测执行

    /*
    推测执行是hadoop的一个功能,其可以触发执行一些重复的任务(task).目标是通过加快task的结果以及进行侦测将执行满的TaskTracker加入到黑名单的方式提高整体的效率。
    */
    mapred.map.tasks.speculative.execution = true
    mapred.reduce.tasks.speculative.execution = true
  • 相关阅读:
    <audio> 标签简介
    <sessionState>
    为 IIS 7.0 配置 <system.webServer>
    Litepal 数据库操作框架的使用 (火)
    Oracle Study之-AIX6.1构建Oracle 10gR2 RAC(4)
    【iOS开发-55】图片轮播案例:scrollView的分页、滚动栏、利用代理控制定时器和Page Control以及多线程问题
    小白学react之网页获取微信用户信息
    HTML5游戏实战(1):50行代码实现正面跑酷游戏
    浮动、定位
    Tomcat7.0源代码分析——启动与停止服务原理
  • 原文地址:https://www.cnblogs.com/lijingang/p/11395148.html
Copyright © 2011-2022 走看看