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优化的四种方法相关推荐

  1. C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)

    众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0  1  1  2  3  5  8  13  21...... 下面我们将介绍四种方法来用C语言计算机 ...

  2. (转).NET导出Excel的四种方法及评测

    .NET导出Excel的四种方法及评测 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspo ...

  3. 在应用程序中替换Linux中Glibc的malloc的四种方法

    打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc.realloc.calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工 ...

  4. 用MATLAB结合四种方法搜寻罗马尼亚度假问题

    选修了cs的AI课,开始有点不适应,只能用matlab硬着头皮上了,不过matlab代码全网仅此一份,倒有点小自豪. 一.练习题目 分别用宽度优先.深度优先.贪婪算法和 A*算法求解"罗马利 ...

  5. linux如何创建共享内存,linux实现共享内存同步的四种方法

    https://blog.csdn.net/sunxiaopengsun/article/details/79869115 本文主要对实现共享内存同步的四种方法进行了介绍. 共享内存是一种最为高效的进 ...

  6. 学校机房计算机缺陷,学校机房管理系统维护四种方法

    学校机房管理系统维护四种方法 学生到机房上机时,对什么都好奇,什么都想实践一下:例如修改显示属性.修改网络属性.屏幕保护加密.删除文件.建立很多无用的快捷方式等等.学生有强烈求知欲望,本来是件好事,但 ...

  7. 福禄克网络:突破百米布线的四种方法及优缺点分析

    综合布线如何突破百米壁垒这是一个常见问题--您需要连接的终端设备距离较近的电信机房(TR)有点远.虽然行业标准将通道长度限制为100米,但连接设备可能需要150米甚至200米的通道长度. 有四种方法可 ...

  8. Win11怎么调亮度?Win11调屏幕亮度的四种方法

    ​Win11怎么调亮度?当我们安装了新的电脑系统时,很多功能设置都还需要根据自己的使用习惯重新调整,今天小编将为大家分享的是Win11调屏幕亮度的四种方法,如果你觉得目前的电脑屏幕亮度使用起来不适,那 ...

  9. MySQL性能优化的9种方法

    MySQL性能优化的9种方法 1.选择最合适的字段属性 Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快.因此,在创建表的时候,为 ...

最新文章

  1. 辞职之后的思考--激励
  2. java lock的原理,Java中Lock原理探究
  3. 今天介绍一款强大的服务器开发工具(JRebel)
  4. LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] c++
  5. MOON.ORM 3.5 MYSQL的配置及使用方法(最新版免费下载使用.欢迎加盟)
  6. python之路_自定义属性、json及其他js补充
  7. java.lang.UnsupportedOperationException
  8. Mybatis 二级缓存简单示例
  9. NPM酷库:uuid,生成随机ID
  10. Java语言的特点和特性
  11. 当数据库遇上自动驾驶,阿里云 DAS 在自治诊断的突破
  12. 《Visual Studio Code权威指南》读后总结
  13. SQL Server 全文索引的管理
  14. 4种基站相关概念——宏基站、微基站、皮基站、飞基站
  15. 上海拍牌服务器协议,上海拍牌服务器地址
  16. EditText实现输入自定义表情
  17. multisim异或门
  18. 阿里云短信服务(无需营业执照)快速上手
  19. OS学习笔记-5(清华大学慕课)计算机体系结构与内存层次
  20. 解释耳语协议和 Status.im

热门文章

  1. 便利贴--25{uniapp移动端滑动模块-因为uniapp打包后没有window,所以要另外去做监听和触控事件的传递}
  2. ftp命令行登陆 用法指南
  3. Criteria和DetachedCriteria
  4. 【Vue3 | 实现精美待办】01.项目启航
  5. matplotlib的基本用法(十三)——figure绘制多图
  6. 【ES知识】ES基础查询语法一览
  7. GDPR全文翻译(一)
  8. Oracle IN 与 DISTINCT
  9. Change Log for Pruning Undesired Code of Joomsport
  10. Qt QTreeWidget 详解