zoukankan      html  css  js  c++  java
  • hive性能调优的几种方式

    关于hive数据仓库的调优方式有很多种,留篇博客用来方便记忆...

    1、设置本地模式

      在hive0.7版本之后就开始支持任务执行选择本地模式(local mode),尽管hive是基于hadoop集群来做大数据处理的,但是有时会出现输入的数据量非常小,其查询出发执行任务的消耗时间远远大于job执行时间,这种情况下,本地执行任务是不是更加效率?

    设置方式:set hive.exec.mode.local.auto=true

    2、并行执行

      对于某个job,若存在许多阶段可以并行执行,则集群利用率会变高,提高了查询的效率(系统资源空闲情况下)

    设置方式:set hive.exec.parallel=true

         set hive.exec.parallel.thread.number=16; //同一个sql运行最大并行度,默认为8

    3、严格模式(默认为非严格模式)

      严格模式的作用,是为了防止用户执行的危险查询,如下:

        对于分区表,用户不允许扫描所有分区;

        对于使用了order by语句的查询,要求必须使用limit语句;

        限制笛卡尔积的查询

    设置方式:修改配置信息hive.mapred.mode为strict(永久设置) |  命令 set hive.mapred.mode=strict(非永久方式)

    4、JVM的重用

      虚拟机的重用同样适用于大量的小文件的场景,尤其对于job种包含非常多的task任务时

    设置方式:修改hadoop的mapred-site.xml文件设置 mapred.job.reuse.jvm.num.tasks(永久配置) | set mapred.job.reuse.jvm.num.tasks=n

    5、Fetch抓取

      对于某些查询可以直接跳过MR计算,查询table对应存储目录下的文件效率更高(全局查找,字段查找,filter查找,limit查找)

    设置方式:修改hive/conf/hive-default.xml文件设置 hive.fetch.task.conversion 为more

    6、数据倾斜的解决方法

      之前有过相关博客:https://www.cnblogs.com/afeiiii/p/13582276.html

    7、explain执行计划

      通过执行计划来调节sql

    8、合理设置map/reduce的数量

      合理设置数量,可以提高效率,过多则会占用资源

    设置方式:set dfs.block.size=n(n默认为128MB,合理降低可以增加map)

            set  mapred.reduce.tasks=n 

  • 相关阅读:
    JS的IE和FF兼容性问题汇总
    解决flash挡住层的问题
    javascript 代码优化工具 UglifyJS
    理解面向对象
    js中的等号与非等号
    js 的数据类型转换
    js优化 ----js的有序加载
    各浏览器对页面外部资源加载的策略
    js 执行效率
    脚本的加载,解析,与执行
  • 原文地址:https://www.cnblogs.com/afeiiii/p/13888594.html
Copyright © 2011-2022 走看看