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;

hive优化之参数调优的更多相关文章

  1. hive sql的参数调优

    shuffle优化之减少shuffle数据量 1.谓词下推  hive.optimize.ppd ,默认为true. 所谓谓词下推就是过滤条件如果写在shuffle操作后面,就提前过滤掉,减少参与sh ...

  2. 大数据:Hive常用参数调优

    1.limit限制调整 一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果. 有一个配置属性可以开启,避免这种情况---对数据源进行抽样 hive.limit.optimize.e ...

  3. Spark性能优化--数据倾斜调优与shuffle调优

    一.数据倾斜发生的原理 原理:在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作.此时如果某个key对应的数据量特 ...

  4. 1,Spark参数调优

    Spark调优 目录 Spark调优 一.代码规范 1.1 避免创建重复RDD 1.2 尽量复用同一个RDD 1.3 多次使用的RDD要持久化 1.4 使用高性能算子 1.5 好习惯 二.参数调优 资 ...

  5. Spark Shuffle原理、Shuffle操作问题解决和参数调优

    摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...

  6. Linux内核 TCP/IP、Socket参数调优

    Linux内核 TCP/IP.Socket参数调优 2014-06-06  Harrison....   阅 9611  转 165 转藏到我的图书馆   微信分享:   Doc1: /proc/sy ...

  7. 【转】XGBoost参数调优完全指南(附Python代码)

    xgboost入门非常经典的材料,虽然读起来比较吃力,但是会有很大的帮助: 英文原文链接:https://www.analyticsvidhya.com/blog/2016/03/complete-g ...

  8. XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南(附Python代码):http://www.2cto.com/kf/201607/528771.html https://www.zhihu.com/question/ ...

  9. php-fpm参数调优

    关于php-fpm.conf参数调优,只对重要的参数进程调优.其它可参数前辈的. http://php.net/manual/zh/install.fpm.configuration.php (官方的 ...

随机推荐

  1. Duplicate Manager Pro for Mac(重复文件查找工具)破解版安装

    1.软件简介    Duplicate Manager Pro 是 macOS 系统上一款重复文件查找工具,可以帮你在 Mac 电脑上查找出磁盘上面的重复文件,然后让你对这些重复文件进行判断并删除,使 ...

  2. 第三部分:Android 应用程序接口指南---第五节:计算---第一章 RenderScript

    第1章 RenderScript RenderScript提供一个独立于平台并在本地运行的计算引擎,用它来加速你需要大量计算能力的应用.RenderScript是一个运行与Android上计算密集型的 ...

  3. 将自己写的HDL代码封装成带AXI总线的IP

    将自己写的HDL代码封装成带AXI总线的IP 1.Tools->create and package IP 2.create AXI4总线的IP 3.新建block design 4.点击右键, ...

  4. Asp.Net AutoMapper用法

    1.AutoMapper简介 用于两个对象映射,例如把Model的属性值赋值给View Model.传统写法会一个一个属性的映射很麻烦,使用AutoMapper两句代码搞定. 2.AutoMapper ...

  5. 【iCore1S 双核心板_ARM】例程二:读取ARM按键状态

    实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...

  6. .net core实现跨域

    什么是跨域在前面已经讲解过了,这里便不再讲解,直接上代码. 一.后台API接口 用.net core创建一个Web API项目负责给前端界面提供数据. 二.前端界面 建立两个MVC项目,模拟不同的ip ...

  7. 奇淫怪巧之在Delphi中调用不申明函数

    前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样.甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续 ...

  8. 大数据基础篇----jvm的知识点归纳-5个区和垃圾回收机制

    一直对jvm看了又忘,忘了又看的.今天做一个笔记整理存放在这里. 我们先看一下JVM的内存模型图: 上面有5个区,这5个区干嘛用的呢? 我们想象一个场景: 我们有一个class文件,里面有很多的类的定 ...

  9. ElasticSearch在linux上的安装部署全程记录

    由于项目需求,需要在linux平台搭建一套ES服务.在搭建过程中,遇到各种各样的问题.后来都一一解决.现在要记录下来这个过程,以及其中遇到的问题,及其解决方法. 一.环境配置 操作系统:Cent OS ...

  10. [UI] 01 - CSS

    前言 一.认识 From: http://www.runoob.com/css/css-tutorial.html CSS 指层叠样式表 (Cascading Style Sheets) 解决内容与表 ...