大数据笔记-Hive调优总结(一)

在这里插入图片描述

Hive优化的前提是:你先了解清楚MapReduce这个知识点,了解Map;shuffle;Reduce;在分布式中执行的过程。

Hive优化的本质很多都是基于MapReduce的优化(以及sql语法树的优化),本次先分享下基础的优化点:

优化点

● 抓取机制fetch
● 本地模式MR
● Join查询优化
● group by 优化: map 端聚合
● MR引擎并行度调整
● 执行计划
● 并行执行机制
● 严格模式
● 推测执行机制
● 重用JVM

1. 抓取机制

在这里插入图片描述

  1. 你需要明白为什么要开启fetch?
  2. fetch的原理是啥?

2. 本地模式 mapreduce (小文件10倍性能的提升)

在这里插入图片描述
是否有其他的方案处理小文件问题?(肯定有嘛)

Join查询优化(重点记住)

在这里插入图片描述
在这里插入图片描述

其实这块不管是spark还是presto优化的原理本质都是一样
都会经过语法词法分析解析为AST语法树,然后进行相应的逻辑优化与物理优化

4. group by 优化: map端聚合 (预聚合+负载均衡)(重点记住)

在这里插入图片描述
在这里插入图片描述
同上

5. MapReduce引擎并行度调整

在这里插入图片描述

set mapred.reduce.tasks=10;
create table a_1 as select * from a distribute by rand(123);

这样会将a表的记录,随机的分散到包含10个文件的a_1表中,再用a_1代替上面sql中的a表,则会用10个map任务去完成。每个map任务处理大于12M(几百万记录)的数据,效率肯定会好很多。

在这里插入图片描述

在这里插入图片描述

6. 执行计划

在这里插入图片描述
语法树生成的过程重点

1)parser:将sql解析为AST(抽象语法树),会进行语法校验,AST本质* * 还是字符串
2)Analyzer:语法分析,生成QB(query block)
3)Logicl Plan:逻辑执行计划解析,生成一堆Opertator Tree
4)Logicl Optimizer:进行逻辑执行计划优化,生成一堆Opertator Tree
5)Phsical plan:物理执行计划解析,生成 tasktree
6)Phsical Optimizer:进行物理执行计划优化,生成 t优化后tasktree,该任务即是在集群上执行的作业任务

六步将普通的sql映射成了作业任务。重点是 逻辑执行计划优化和物理执行计划优化

7. 并行执行

在这里插入图片描述

8. 严格模式_ 推测执行

在这里插入图片描述
在这里插入图片描述

总结

  1. 可以从设计上减少Join 降低shuffle过程 – 设计上的优化
  2. 提前聚合:join提前到map端处理 – 计算上的优化
  3. 小文件合并或者本地直接执行 – 计算上的优化
  4. 并行度的优化 – 配置/并发上的优化
  5. 重用JVM
  6. Hive只是一个数据仓库的工具,其核心其实还是SQL解析引擎(以及计算引擎这块),这一块无论是何种大数据计算引擎(Spark;Flink;Presto)这一块的优化本质都一样,都是提前预聚合;谓词下推;大小文件优化;计算粒度优化;资源分配优化等等;自己总结的时候可以将Hive;Spark;Flink这几个热门的分布式计算框架的计算调优部分横向对比总结下。

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pushkin.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值