1、hive参数优化之默认启用本地模式

启动hive本地模式参数,一般建议将其设置为true,即时刻启用:

hive (chavin)> set hive.exec.mode.local.auto;    

hive.exec.mode.local.auto=false

2、设置hive执行模式

hive (default)> set hive.mapred.mode;

hive.mapred.mode=nonstrict

参数hive.mapred.mode控制着hive的执行模式,如果设置为strict模式,则hive作业禁止3种类型查询:

1)分区表没有启用分区过滤字段。

2)order by没有指定limit限制

3)笛卡尔积

3、限制调整

查询中使用limit限制返回数据行数,但是实际mapreduce任务很多情况已经跑完了整个任务。可以通过配置参数对这种情况进行控制:

设置hive.limit.optimize.enable=true;将针对查询对元数据进行抽样。

同时可能还需要设置以下两个参数:

set hive.limit.row.max.size=100000;

set hive.limit.optimize.limit.file=10;

这样设置不好的一点是有些数据可能永远也访问不到。

4、jvm重用相关设置

jvm重用是hadoop调优参数的内容,其对hive的性能影响是非常大的,特别是对于针对很多小文件的场景或task特别多的场景,这类场景任务执行的时间都很短。hadoop默认使用派生的jvm执行mapreduce任务,对于jvm的启动时很大的开销,特别针对于task任务比较多的场景。jvm重用可以使jvm实例在同一个job中运行n次,n的值在hadoop的mapred-site.xml文件进行配置:

<property>

<name> mapred.job.reuse.jvm.num.tasks </name>

<value>10</value>

</property>

也可以在hive cli中通过set设置:

hive (default)> set mapred.job.reuse.jvm.num.tasks;

mapred.job.reuse.jvm.num.tasks=1

hive (default)> set mapred.job.reuse.jvm.num.tasks=10;

hive (default)> set mapred.job.reuse.jvm.num.tasks;  

mapred.job.reuse.jvm.num.tasks=10

这个功能的一个缺点就是会一直占用task插槽不释放,以备重用,直到任务完成才释放。如果在任务过程中出现数据倾斜,则可能task插槽需要等到reduce task任务完成才能释放。

5、推测执行相关配置

hadoop的推测执行功能由mapred-site.xml文件中的2个参数决定:

<property>

<name> mapred.map.tasks.speculative.execution </name>

<value>true</value>

</property>

<property>

<name> mapred.reduce.tasks.speculative.execution</name>

<value>true</value>

</property>

hive本身也有控制推测执行的参数,可以在hive-site.xml文件中配置:

<property>

<name>hive.mapred.reduce.tasks.speculative.execution </name>

<value>true</value>

</property>

hive中推测执行参数默认值如下:

hive (default)> set mapred.map.tasks.speculative.execution;

mapred.map.tasks.speculative.execution=true

hive (default)> set mapred.reduce.tasks.speculative.execution;

mapred.reduce.tasks.speculative.execution=true

hive (default)> set hive.mapred.reduce.tasks.speculative.execution;

hive.mapred.reduce.tasks.speculative.execution=true

6、单个mapreduce中运行多个group by

参数hive.multigroupby.singlemr控制师徒将查询中的多个group by组装到单个mapreduce任务中。如果启用这个优化,那么需要一组常用的group by键:

7、聚合优化:

启用参数:hive.map.aggr=true

8、参数hive.fetch.task.conversion的调优:

默认值:hive.fetch.task.conversion=minimal

建议值:set hive.fetch.task.conversion=more;

9、设置队列优先级

Set mapreduce.job.queuename=bigdata;

最新文章

  1. 关于大数据企业信息查询的API该怎么写
  2. WCF简单使用(分别部署在控制台和IIS上)
  3. HTML的音频和视频
  4. Android中GPS类及方法简介
  5. Echarts图表控件使用总结2(Line,Bar)—问题篇
  6. 23、jQuery九类选择器/jQuery常用Method-API/jQuery常用Event-API
  7. Dos下查询关闭端口的命令例子
  8. 《IT运维之道》
  9. cscope使用
  10. MVC3学习随记一
  11. jconsole 连接 eclipse启动项目
  12. Android网络开发之OkHttp--基本用法POST
  13. Android查缺补漏(线程篇)-- AsyncTask的使用及原理详细分析
  14. Tomcat8.0 配置环境
  15. 洛谷P2144 [FJOI2007]轮状病毒
  16. leetcode刷题笔记326 3的幂
  17. 如何在Idea提交代码到Github上
  18. 对TCP重传的进一步认识
  19. Mybatis 表名是变量时
  20. C#中XmlSerializer实现序列化浅析

热门文章

  1. 安装配置OSA运维管理平台
  2. 我对android开发的一点小感悟小看法
  3. java中自定义注释@interface的用法
  4. InstallShield: 1628 完成基于脚本的安装失败
  5. vue条件与循环
  6. PwniumCTF2014 - JJSN总结
  7. 【转】Web前端性能优化——如何提高页面加载速度
  8. Android qualcomm WCNSS_qcom_cfg.ini 参数介绍
  9. Swift 中函数使用指南
  10. Kubernetes集群部署之一系统环境初始化