1、hive数据仓库权限问题:

set hive.warehouse.subdir.inherit.perms=true;

2、HiveServer2的内存

连接的个数越多压力越大,可以加大内存;可以通过-Xmx设置,在脚本中设置:-Xmx=2048m 甚至 -Xmx=4g

3、关闭推测式任务:默认是打开的

set mapreduce.reduce.speculative=false;
set mapred.map.tasks.speculative.execution=false;
set mapred.reduce.tasks.speculative.execution=false;

4、客户端: 默认是关闭的

显示当前数据库:

set hive.cli.print.current.db = true; 

显示头信息:

set hive.cli.print.header = true;

5、并行执行

每个查询被hive转化成一个或者多个stage,一个stage就是一个mapreduce作业;如果一个job有多个stage,并且每个stage是依赖的,那么这个job就不可以并行执行;如果stage之间关联性不大,则可以并行化执行,减少执行时间。并行数视集群而定,越大越好。

set hive.exec.parallel=true;    //默认是关闭的
set hive.exec.parallel.thread.number=; //默认是8

对比执行时间:

set hive.exec.parallel=false;
select t1.event_time,t2.event_time,t3.event_time from(
select ordernumber, max(event_time) as event_time from order_created group by ordernumber
) t1
left outer join (
select ordernumber, max(event_time) as event_time from order_picked group by ordernumber
) t2 on t1.ordernumber = t2.ordernumber
left outer join (
select ordernumber, max(event_time) as event_time from order_shipped group by ordernumber
) t3 on t1.ordernumber = t3.ordernumber;

一共5个mr job,job一个个的按顺序执行,一共花费94.974s

set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=;
select t1.event_time,t2.event_time,t3.event_time from(
select ordernumber, max(event_time) as event_time from order_created group by ordernumber
) t1
left outer join (
select ordernumber, max(event_time) as event_time from order_picked group by ordernumber
) t2 on t1.ordernumber = t2.ordernumber
left outer join (
select ordernumber, max(event_time) as event_time from order_shipped group by ordernumber
) t3
on t1.ordernumber = t3.ordernumber;

一共5个mr job,其中有3个job同时启动并行执行,一共花费47.32s

7、Local Mode:小表在本地执行,最好是关闭

set hive.exec.mode.local.auto=true;

8、通过explain查看执行计划,查看有几个stage以及执行流程

explain select * from page_views;
explain extended select * from page_views;

9、队列设置:往指定的队列提交任务

set mapred.queue.name = hive
set mapred.job.queue.name = hive

有些版本需要两个都设置才好用,设置一个还不好使

设置任务的优先级别:

set mapred.job.priority = HIGH

10、JVM重用

测试用例:3台虚拟机,内存512M,5000个小文件大小约8G,不重用JVM耗时约1个小时,重用JVM耗时约35分钟;

结论:对于大量小文件的job,开启JVM重用可减少运行时间;

set mapred.job.reuse.jvm.num.tasks = ;

每个jvm执行多少个task,默认为1表示一个jvm运行一个task后就销毁,-1表示无限制;该参数也不是越大越好,建议设置到15-20个就够了;

11、分桶

set hive.enforce.bucketing=true;
set hive.enforce.sorting=true;

Hive参数层面常用优化的更多相关文章

  1. Hive 常用优化参数

    常用调优测试语句 :    ①显示当前hive环境的参数值: set 参数名; 如:   hive> set mapred.map.tasks;mapred.map.tasks;   ②设置hi ...

  2. hadoop入门到实战(6)hive常用优化方法总结

    问题导读:1.如何理解列裁剪和分区裁剪?2.sort by代替order by优势在哪里?3.如何调整group by配置?4.如何优化SQL处理join数据倾斜?Hive作为大数据领域常用的数据仓库 ...

  3. hive参数配置及任务优化

    一.hive常用参数 0.常用参数 --@Name: --@Description: --@Type:全量加载 --@Author:--- --@CreateDate: --@Target: --@S ...

  4. 写好Hive 程序的若干优化技巧和实际案例

    使用Hive可以高效而又快速地编写复杂的MapReduce查询逻辑.但是一个”好”的Hive程序需要对Hive运行机制有深入的了解,像理解mapreduce作业一样理解Hive QL才能写出正确.高效 ...

  5. hive参数配置详细

    hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) true hive.exec.mode.local.auto.i ...

  6. hive查询注意及优化tips

    Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具.使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别, 所以需要去掉原有关系型数 ...

  7. [Hive] - Hive参数含义详解

    hive中参数分为三类,第一种system环境变量信息,是系统环境变量信息:第二种是env环境变量信息,是当前用户环境变量信息:第三种是hive参数变量信息,是由hive-site.xml文件定义的以 ...

  8. linux内核参数注释与优化

    目录 1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观. 学习linux也有不少 ...

  9. MongoDB在Linux下常用优化设置

    MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值,例如预读值和默认文件描述符数目等,会对系统性能有很大的影响. 1.关闭数据库文件的 ...

随机推荐

  1. .Net分布式缓存应用实例:Couchbase

    转自:http://www.cnblogs.com/wu-jian Couchbase概述 Couchbase最早叫Membase,是由Memcached项目组的一些头目另立的山头. 2011年与Co ...

  2. linux下的php网站放到Windows服务器IIS下导入 .htaccess文件伪静态规则转换 (wordpress)

    需要特别注意的是: 1. .htacdess文件在 wordpress中 是可以生成的 安装 WP Super Cache后,开启该插件>>设置>>高级>>找到并点 ...

  3. Python 创建和发布安装函数模块

    1. create dir "nester" under C:\Users\eric\AppData\Local\Programs\Python\Python35-32\ 2. c ...

  4. 【sql】之使用sql根据身份证查询过生日人数

    根据当前日期查询有多少人过生日 ,) = DATE_FORMAT(NOW(),'%m'); 查询price一样的人数 select * from people where price in (sele ...

  5. insmod module_param 模块参数

    模块参数 引导模块时,可以向它传递参数.要使用模块参数加载模块,这样写: insmod module.ko [param1=value param2=value ...] 为了使用这些参数的值,要在模 ...

  6. 黄聪:PHP 免费获取手机号码归属地(转)

    一.淘宝网API API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回 ...

  7. 学习WordPress必须知道的函数(转)

    WordPress是目前十分流行的独立博客程序,因傻瓜化安装和使用,其在网民中的应用已近乎普及.但也因为很多新入门的用户几乎对WordPress 程序没有任何了解,造成使用中碰到问题无法解决,求助也十 ...

  8. (C#) 多线程修改布尔值, volatile

    参考: https://msdn.microsoft.com/en-us/library/x13ttww7(VS.80).aspx http://stackoverflow.com/questions ...

  9. spring学习笔记(转)

    [1]搭建环境 1.添加jar包 使用spring需要 sring.jarcommons-loggin.jar 如果使用aop组件需要 aspectjweaver.jaraspectjrt.jar 如 ...

  10. Educational Codeforces Round 15 Powers of Two

    Powers of Two 题意: 让求ai+aj=2的x次幂的数有几对,且i < j. 题解: 首先要知道,排完序对答案是没有影响的,比如样例7 1一对,和1 7一对是样的,所以就可以排序之后 ...