一 整体架构优化

现在hive的整体框架如下,计算引擎不仅仅支持Map/Reduce,并且还支持Tez、Spark等。根据不同的计算引擎又可以使用不同的资源调度和存储系统。

整体架构优化点:

1 根据不同业务需求进行日期分区,并执行类型动态分区。

相关参数设置:

0.14中默认hive.exec.dynamic.partition=ture

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

4 yarn优化,在此不再展开,后面专门介绍。

二 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优化

整体的优化策略如下:

  1. 去除查询中不需要的column
  2. Where条件判断等在TableScan阶段就进行过滤
  3. 利用Partition信息,只读取符合条件的Partition
  4. Map端join,以大表作驱动,小表载入所有mapper内存中
  5. 调整Join顺序,确保以大表作为驱动表
  6. 对于数据分布不均衡的表Group by时,为避免数据集中到少数的reducer上,分成两个map-reduce阶段。第一个阶段先用Distinct列进行shuffle,然后在reduce端部分聚合,减小数据规模,第二个map-reduce阶段再按group-by列聚合。
  7. 在map端用hash进行部分聚合,减小reduce端数据处理规模。

五 平台优化

1hive on tez

2 spark SQL大趋势

总结

上面主要介绍一些优化思想,有些优化点没有详细展开,后面分别介绍yarn的优化细节、SQL详细的优化实例以及我们在Tez、spark等框架优化结果。最后用一句话共勉:边coding,边优化,优化无止境。

Hive整体优化策略的更多相关文章

  1. Hive(六)hive执行过程实例分析与hive优化策略

    一.Hive 执行过程实例分析 1.join 对于 join 操作:SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON (pv.useri ...

  2. hive工作中的一些优化策略

    1.hive抓取策略     hive.fetch.task.conversion = more/none     more不走mr,none走mr   2.explain 显示执行计划   3.设置 ...

  3. hive作业的优化策略

    Mapreduce自身的特点: 1.IO和网络负载大:优化策略:减少IO和网络负载. 2.内存负载不大.优化策略:增大内存使用率: 3.CPU负载不大.优化策略:增大CPU使用率: (hive的优化应 ...

  4. Hive优化策略

    hive优化目标 在有限的资源下,运行效率高. 常见问题 数据倾斜.Map数设置.Reduce数设置等 hive运行 查看运行计划 explain [extended] hql 例子 explain ...

  5. Hive性能优化

    1.概述 继续<那些年使用Hive踩过的坑>一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题.下面开始本篇文章的优化介绍. 2.介绍 首先 ...

  6. Hive任务优化(1)

    一个Hive查询生成多个Map Reduce Job,一个Map Reduce Job又有Map,Reduce,Spill,Shuffle,Sort等多个阶段,所以针对Hive查询的优化可以大致分为针 ...

  7. 常见性能优化策略的总结 good

    阅读目录 代码 数据库 缓存 异步 NoSQL JVM调优 多线程与分布式 度量系统(监控.报警.服务依赖管理) 案例一:商家与控制区关系的刷新job 案例二:POI缓存设计与实现 案例三:业务运营后 ...

  8. Hive性能优化上的一些总结

    https://blog.csdn.net/mrlevo520/article/details/76339075 1.介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据 ...

  9. Hive性能优化(全面)

    1.介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不是问题,数据倾斜是个问题. jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次 ...

随机推荐

  1. mysql 操作表结构

    整理一下对mysql表结构的简单操作,dos窗口模式的,现在基本上都是些图形化操作mysql,像这种命令形式的少了很多,暂时记忆点,以防以后忘记. 从数据库的创建开始: show databases; ...

  2. 第3章 Hadoop 2.x分布式集群搭建

    目录 3.1 配置各节点SSH无密钥登录 1.将各节点的秘钥加入到同一个授权文件中 2.拷贝授权文件到各个节点 3.测试无秘钥登录 3.2 搭建Hadoop集群 1.上传Hadoop并解压 2.配置H ...

  3. 学习 Git的使用过程

    原文链接: http://www.cnblogs.com/NickQ/p/8882726.html 学习 Git的使用过程 初次使用 git config --global user.name &qu ...

  4. C++远征离港篇-学习笔记

    C++远征离港篇 离港总动员 C++远征计划的学习者肯定是冲着封装,继承,多态来的. 知识点: 指针 VS 引用 #define VS const(更强数据控制力) 函数默认值 & 函数重载 ...

  5. [bzoj5278][Usaco2018 Open]Out of Sorts

    有点厉害,,,不会啊 答案就是所有前i个数有多少不在前i个里的max? 为啥啊求助

  6. JavaScript---复选框反选全选

    Script <script type="text/javascript"> /*直接使用document.getElementsByName("c1&quo ...

  7. P1209 [USACO1.3]修理牛棚 Barn Repair

    P1209 [USACO1.3]修理牛棚 Barn Repair 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. ...

  8. nuget在jenkins上不能自动还原项目依赖包---笔记

    最近遇到一个情况,IDE 是 VS2015 Update3 ,新建一个library项目(暂时叫做 mytests),然后用 nuget 安装了一个 Shouldly 包 在 VS 上一切正常,可以跑 ...

  9. 「日常训练」Equation(HDU-5937)

    题意与分析 时隔一个月之后来补题.说写掉的肯定会写掉. 题意是这样的:给1~9这些数字,每个数字有\(X_i\)个,问总共能凑成多少个不同的等式\(A+B=C\)(\(A,B,C\)均为1位,\(1+ ...

  10. Objective-C 类和对象

    面向对象 面向对象(Object-Oriented)是基于面向过程(procedure-oriented)而言的 面向对象 强调对象<指挥者> OC, Java语言就是面向对象 面向过程 ...