当前位置:   article > 正文

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

大数据笔记-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);
  • 1
  • 2

这样会将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这几个热门的分布式计算框架的计算调优部分横向对比总结下。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/148542
推荐阅读
相关标签
  

闽ICP备14008679号