「Hive进阶篇」HQL底层执行过程及原理详解

本次来到Hive进阶系列文章第三篇,总结了hiveQL底层执行过程原理相关分享,前面分享的hive优化总结思维导图hive优化PDF文档有需要可关注公众号《大数据阶梯之路》找小编获取文档保存本地吧,公众号不断分享技术相关文章。话不多说,👇🏻下面就直接开讲吧!

先通过大纲提问式进行概览,我大致介绍下 你能通过此篇文章学到什么:
1. hive主要有几个组件在协调工作
2. hive的底层执行架构
3. 一条hiveQL在底层是如何一步步翻译为MapReduce程序的

在这里插入图片描述

一、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并输出。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值