阿飞飞飞

学而时习之

导航

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 

posted on 2020-10-28 00:07  阿飞飞飞  阅读(735)  评论(0编辑  收藏  举报