栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据

HiveSQL语句解析流程

大数据 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HiveSQL语句解析流程

流程图地址  https://cwiki.apache.org/confluence/display/Hive/Design#Design-HiveArchitecture

一丶上图英文注释

DRIVER---------------->驱动
COMPILER-------------->编译器
metaSTORE------------->元数据
JOBTRACKER------------>job服务器
EXECCUTIONENGINE------>执行引擎
metaDataOps for DDLs-->元数据管理
fetchResults---------->获取结果
sendResults----------->发送结果
taskTracker----------->task服务器
map Operator Tree----->map算子树
reduce Operator Tree-->reduce算子树
serde/Deserialize----->序列化/反序列化器
executeQuery---------->执行查询
getPlan--------------->获取计划
sendPlan-------------->发送计划
executePlan----------->执行计划


二丶Hive的主要组件

图1展示了Hive的主要组件及其与Hadoop的交互
1.WebUI--用户向系统提交查询和其他操作的用户界面
2.驱动程序[DRIVER]--接收查询的组件,这个组件实现了会话句柄的概念,提供执行和基于JDBC/ODBC接口的API
3.编译器[COMPILER]--解析查询的组件,对不同的查询块和查询表达式进行语义分析,并最终在metastore上查找表和分区元数据的帮助下生成执行计划。
4.元数据[metaSTORE]--存储仓库中各种表和分区的所有结构信息的组件,包括列和列类型信息,读写数据所需的序列化器和反序列化器,以及存储数据的对应HDFS文件。
5.执行引擎[EXECCUTION ENGINE]--执行由编译器创建的执行计划的组件,该计划是一个分阶段的DAG,执行引擎管理计划的这些不同阶段之间的依赖关系,并在适当的系统组件上执行这些阶段。

三丶执行步骤解析

图1 是一个典型的查询流式系统。
1.使用WebUI调用执行驱动程序接口[步骤1]进行查询。
2.驱动器创建一个会话处理查询,并将此查询发送到编译器得到一个执行计划[步骤2]。
3.编译器从元数据(metaStore)得到必要的元数据信息(步骤3和步骤4),元数据还用于在查询树中对表达式进行类型检查,以及根据查询谓词[where]修剪分区。
4.编译器生成的计划(步骤5)是一个阶段的DAG,每个阶段要么是map/reduce作业,要么是元数据操作,要么是对HDFS的操作。
对于map/reduce阶段,计划包含map算子树(在mapper上执行的算子树)和reduce算子树(对于需要的reducer操作)。
5.执行引擎[EXECCUTION ENGINE] 将这些阶段提交给适当的组件(步骤6、6.1、6.2、6.3)。
6.在每个任务(mapper/reducer)中,与表或中间输出关联的反序列化器用于从HDFS文件中读取行,这些行通过关联的算子树传递,
生成输出后,通过序列化程序将其写入临时HDFS文件(如果操作不需要reduce阶段,这种情况会在mapper中发生)。
临时文件向计划后续的map/reducer阶段提供数据。
7.对于DML操作,最后一个临时文件被移动到表的位置。
该方案用于保证不读取脏数据(文件重命名在HDFS中是原子操作)。
8.对于查询,执行引擎直接从HDFS读取临时文件的内容,作为驱动程序[DRIVER]获取调用的一部分(步骤7、8、9)。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278175.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号