Hive参数层面常用优化
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参数层面常用优化的更多相关文章
- Hive 常用优化参数
常用调优测试语句 : ①显示当前hive环境的参数值: set 参数名; 如: hive> set mapred.map.tasks;mapred.map.tasks; ②设置hi ...
- hadoop入门到实战(6)hive常用优化方法总结
问题导读:1.如何理解列裁剪和分区裁剪?2.sort by代替order by优势在哪里?3.如何调整group by配置?4.如何优化SQL处理join数据倾斜?Hive作为大数据领域常用的数据仓库 ...
- hive参数配置及任务优化
一.hive常用参数 0.常用参数 --@Name: --@Description: --@Type:全量加载 --@Author:--- --@CreateDate: --@Target: --@S ...
- 写好Hive 程序的若干优化技巧和实际案例
使用Hive可以高效而又快速地编写复杂的MapReduce查询逻辑.但是一个”好”的Hive程序需要对Hive运行机制有深入的了解,像理解mapreduce作业一样理解Hive QL才能写出正确.高效 ...
- hive参数配置详细
hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) true hive.exec.mode.local.auto.i ...
- hive查询注意及优化tips
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具.使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别, 所以需要去掉原有关系型数 ...
- [Hive] - Hive参数含义详解
hive中参数分为三类,第一种system环境变量信息,是系统环境变量信息:第二种是env环境变量信息,是当前用户环境变量信息:第三种是hive参数变量信息,是由hive-site.xml文件定义的以 ...
- linux内核参数注释与优化
目录 1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观. 学习linux也有不少 ...
- MongoDB在Linux下常用优化设置
MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值,例如预读值和默认文件描述符数目等,会对系统性能有很大的影响. 1.关闭数据库文件的 ...
随机推荐
- php生成二维码可以有以下几种方式
1.google开放api $urlToEncode="http://bbs.lewanchina.com"; generateQRfromGoogle($urlToEncode) ...
- 解决SQLite3数据库Error: database disk image is malformed
这种错误的提示一般都是数据库文件出现了问题,具体导致问题的原因不必深究,我们只讨论这种问题的饿解决方法: 比如数据库:test.db 这里还要分两种情况: 情况一: sqlite3 test.db & ...
- 免安装Oracle客户端使用PLSQL Developer 7/8 连接Oracle10/11g
众所周知,Oralce的客户端几百兆太大,网上也有许多DIR的处理.这里的处理使用官方提供ORALCE工具包Instant Client Package! 下载地址:http://www.oracle ...
- HDMI的CEC是如何控制外围互联设备的
1. HDMI CEC算是一个相当庞大的系统,想了解还要从HDMI接口信号啊.物理地址啊.逻辑地址啊等等HDMI基础的东西说起. 2. 不过可以简单的这么理解,在HDMI CEC最小系统里,所有通过H ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(七):任务列表展示
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- activiti自定义流程之Spring整合activiti-modeler5.16实例(六):启动流程
注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 (2)创建流程模型:activiti自定义流程之Spring ...
- PHP 打印调用函数入口地址(堆栈)
今天网站出现一个BUG,然后直接在数据库类里面写日志,看是哪条SQL出了问题,SQL语句到是找到了,但是不知道这条SQL语句来自何处,于是就想啊,如果能有一个办法,查看当前正在运行的这个方法是被哪个方 ...
- SpringMVC4.0.3 @ResponseBody JSON 中文乱码问题
@RequestMapping(value="listUserJson.html",produces="text/html;charset=UTF-8") @R ...
- 调试压缩后的Javascript文件:在 Chrome 和 Safari ,选择“脚本”标签,找到相应的文件,然后点击“{}”图标(pretty print,在面板底部)
- [技巧]实际项目中background-image应写在页面上
摘自:http://www.zhangxinxu.com 因为实际项目中(数据对接时),这肯定是个动态的URL地址,css文件似乎不支持动态URL 地址. <img src="../i ...