「Hive 进阶篇」三、HQL 底层执行过程及原理详解
本次来到 Hive 进阶系列文章第三篇,总结了 hiveQL 底层执行过程原理相关分享,前面分享的
hive优化总结思维导图
和hive优化PDF文档
,有需要可 评论区留言 or 文末原文链接 获取 PDF 文档保存本地吧,学习和复习都是绝佳,不断分享技术相关文章。话不多说,👇🏻下面就直接开讲吧!
一、hive 几大组件
ui:用户界面,我们提交 hiveQL 的命令行界面
driver:驱动程序,接受查询的组件
compiler:编译器,负责将 hiveQL 编译为 MapReduce,对不同的查询块和查询表达式进行语义分析,最终借助表和元数据库查找的分区元数据 来生成执行计划
metastore:元数据库,存储 hive 各种表和分区的元数据信息
executor engine:执行引擎,负责将 compiler 编译器 编译好的执行计划提交到不同的平台上去
针对上图的流程,我简要概述:hive 的执行入口是 driver,提交的 hql 语句首先到 driver,由 driver 来负责执行管理,之后查找元数据信息,再调用 compiler 编译器解析 hql 语句成物理计划返回给 driver,然后把物理执行计划连同元数据发送给执行引擎执行,至此这就到了 hadoop 层面的 MapReduce 程序了。
二、hiveQL 编译成 MapReduce 过程
这个 hiveQL 编译成 MapReduce 的过程就是在上面的COMPILER组件
里完成的。
编译过程主要有以下六个步骤:词法语法解析 ->语义解析 ->生成逻辑执行计划 ->优化逻辑执行计划 ->生成物理执行计划 ->优化物理执行计划
①词法语法解析
:先是由解析器解析 hiveQL 语法和词法,生成抽象语法树 AST Tree;
②语义解析
:然后遍历抽象语法树,转换为查询单元 Query Block,查询单元是一条 sql 最基本的组成单元,查询单元包含了输入源、计算过程、输出 三个部分;
③生成逻辑执行计划
:遍历查询单元,生成操作树 Operator Tree,操作树是由一系列操作符 Opreator 组成,每一个操作符完成操作后就将数据流式传递到下一个操作符进行逻辑计算;
④优化逻辑执行计划
:逻辑层优化器针对逻辑执行计划做优化,比如合并多余的操作符,达到减少 MapReduce Job,减少数据传输和 shuffle 数据量;
⑤生成物理执行计划
:遍历逻辑执行计划,翻译为 MapReduce 任务,生成物理执行计划;
⑥优化物理执行计划
:物理层优化器针对物理执行计划做优化,最终生成 MR job 并输出。
微信公众号超多大数据数仓学习资料,有需要可 评论区留言 or 文末访问公众号推文链接
获取原创 PDF 文档保存本地吧,学习和复习都是绝佳。
分享就到此结束了,建议收藏吸纳消化,博文不易,欢迎👏🏻点赞+转发
版权声明: 本文为 InfoQ 作者【大数据阶梯之路】的原创文章。
原文链接:【http://xie.infoq.cn/article/7300925d04516f8f37f064fb5】。文章转载请联系作者。
评论