HIVE优化的四种方法
1、Hive整体架构优化
2、在MR阶段进行优化
3、Hive在SQL中优化
4、Hive框架平台优化
1.hive整体架构优化:
现在hive的整体框架如下,计算引擎不仅仅支持Map/Reduce,并且还支持Tez、Spark等。根据不同的计算引擎又可以使用不同的资源调度和存储系统。
整体架构优化点:
1、根据不同业务需求进行日期分区,并执行类型动态分区。
相关参数设置:
0.14中默认hive.exec.dynamic.partition=true
2、为了减少磁盘存储空间以及I/O次数,对数据进行压缩
相关参数设置:
job输出文件按照BLOCK以Gzip方式进行压缩。
mapreduce.output.fileoutputformat.compress
=
true
mapreduce.output.fileoutputformat.compress.type
=
BLOCK
mapreduce.output.fileoutputformat.compress.codec
=
org.apache.hadoop.io.compress.GzipCodec
map输出结果也以Gzip进行压缩。
mapreduce.map.output.compress
=
true
mapreduce.map.output.compress.codec
=
org.apache.hadoop.io.compress.GzipCodec
对hive输出结果和中间结果进行压缩。
hive.exec.compress.output
=
true
hive.exec.compress.intermediate
=
true
3、hive中间表以SequenceFile保存,可以节约序列化和反序列化的时间
相关参数设置:
hive.query.result.fileformat=SequenceFile
二、MR阶段优化
hive操作符有:
reduce切割算法:
相关参数设置,默认为:
hive.exec.reducers.max=999
hive.exec.reducers.bytes.per.reducer=1G
reduce task num=min{reducers.max,input.size/bytes.per.reducer},可以根据实际需求来调整reduce的个数。
三、JOB优化
1、本地执行
默认关闭了本地执行模式,小数据可以使用本地执行模式,加快执行速度。
相关参数设置:
hive.exec.mode.local.auto=true
默认本地执行的条件是,hive.exec.mode.local.auto.inputbytes.max=128MB, hive.exec.mode.local.auto.tasks.max=4,reduce task最多1个。 性能测试:
数据量(万) 操作 正常执行时间(秒) 本地执行时间(秒)
170 group by 36 16
80 count 34 6
2、mapjoin
默认mapjoin是打开的, hive.auto.convert.join.noconditionaltask.size=10MB
装载到内存的表必须是通过scan的表(不包括group by等操作),如果join的两个表都满足上面的条件,/*mapjoin*/指定表格不起作用,只会装载小表到内存,否则就会选那个满足条件的scan表。
四、SQL优化
整体的优化策略如下:
- 去除查询中不需要的column
- Where条件判断等在TableScan阶段就进行过滤
- 利用Partition信息,只读取符合条件的Partition
- Map端join,以大表作驱动,小表载入所有mapper内存中
- 调整Join顺序,确保以大表作为驱动表
- 对于数据分布不均衡的表Group by时,为避免数据集中到少数的reducer上,分成两个map-reduce阶段。第一个阶段先用 Distinct列进行shuffle,然后在reduce端部分聚合,减小数据规模,第二个map-reduce阶段再按group-by列聚合。
- 在map端用hash进行部分聚合,减小reduce端数据处理规模。
五、平台优化
1、hive on tez
2、spark SQL大趋势
HIVE优化的四种方法相关推荐
- C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)
众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0 1 1 2 3 5 8 13 21...... 下面我们将介绍四种方法来用C语言计算机 ...
- (转).NET导出Excel的四种方法及评测
.NET导出Excel的四种方法及评测 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspo ...
- 在应用程序中替换Linux中Glibc的malloc的四种方法
打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc.realloc.calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工 ...
- 用MATLAB结合四种方法搜寻罗马尼亚度假问题
选修了cs的AI课,开始有点不适应,只能用matlab硬着头皮上了,不过matlab代码全网仅此一份,倒有点小自豪. 一.练习题目 分别用宽度优先.深度优先.贪婪算法和 A*算法求解"罗马利 ...
- linux如何创建共享内存,linux实现共享内存同步的四种方法
https://blog.csdn.net/sunxiaopengsun/article/details/79869115 本文主要对实现共享内存同步的四种方法进行了介绍. 共享内存是一种最为高效的进 ...
- 学校机房计算机缺陷,学校机房管理系统维护四种方法
学校机房管理系统维护四种方法 学生到机房上机时,对什么都好奇,什么都想实践一下:例如修改显示属性.修改网络属性.屏幕保护加密.删除文件.建立很多无用的快捷方式等等.学生有强烈求知欲望,本来是件好事,但 ...
- 福禄克网络:突破百米布线的四种方法及优缺点分析
综合布线如何突破百米壁垒这是一个常见问题--您需要连接的终端设备距离较近的电信机房(TR)有点远.虽然行业标准将通道长度限制为100米,但连接设备可能需要150米甚至200米的通道长度. 有四种方法可 ...
- Win11怎么调亮度?Win11调屏幕亮度的四种方法
Win11怎么调亮度?当我们安装了新的电脑系统时,很多功能设置都还需要根据自己的使用习惯重新调整,今天小编将为大家分享的是Win11调屏幕亮度的四种方法,如果你觉得目前的电脑屏幕亮度使用起来不适,那 ...
- MySQL性能优化的9种方法
MySQL性能优化的9种方法 1.选择最合适的字段属性 Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快.因此,在创建表的时候,为 ...
最新文章
- 辞职之后的思考--激励
- java lock的原理,Java中Lock原理探究
- 今天介绍一款强大的服务器开发工具(JRebel)
- LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] c++
- MOON.ORM 3.5 MYSQL的配置及使用方法(最新版免费下载使用.欢迎加盟)
- python之路_自定义属性、json及其他js补充
- java.lang.UnsupportedOperationException
- Mybatis 二级缓存简单示例
- NPM酷库:uuid,生成随机ID
- Java语言的特点和特性
- 当数据库遇上自动驾驶,阿里云 DAS 在自治诊断的突破
- 《Visual Studio Code权威指南》读后总结
- SQL Server 全文索引的管理
- 4种基站相关概念——宏基站、微基站、皮基站、飞基站
- 上海拍牌服务器协议,上海拍牌服务器地址
- EditText实现输入自定义表情
- multisim异或门
- 阿里云短信服务(无需营业执照)快速上手
- OS学习笔记-5(清华大学慕课)计算机体系结构与内存层次
- 解释耳语协议和 Status.im
热门文章
- 便利贴--25{uniapp移动端滑动模块-因为uniapp打包后没有window,所以要另外去做监听和触控事件的传递}
- ftp命令行登陆 用法指南
- Criteria和DetachedCriteria
- 【Vue3 | 实现精美待办】01.项目启航
- matplotlib的基本用法(十三)——figure绘制多图
- 【ES知识】ES基础查询语法一览
- GDPR全文翻译(一)
- Oracle IN 与 DISTINCT
- Change Log for Pruning Undesired Code of Joomsport
- Qt QTreeWidget 详解