概述
什么是Hive
- Hive是由FaceBook开源用于解决海量日志文件的数据结构 ; Hive是基于Hadoop的一个数据仓库工具 , 可以将结构化的数据文件映射成一张表 , 并提供了类SQL的查询功能 , 底层计算的引擎默认是Hadoop的MapReduce(本质就是将sql转换为mapreduce程序),并且可以将引擎更换为Spark / Tez
推荐学习博客 : 关于hive的那些事
Hive架构
如图所示 : Hive给我们用户提供了一系列的交互接口 , 接受用户的sql指令 , 使用自己的Driver , 再去结合元数据(Meta Store) , 将这些操作指令转换为MapReduce , 提交到Hadoop中并执行 , 最后 , 将执行结果输出到用户的交互接口 .
- 用户接口 : CLi , JDBC/ODBC , WEBUI
- 元数据 : Metastore
- Hadoop : HDFS存储 , MapReduce计算
- 驱动器 : Driver 4
Hive优点
- 操作类SQL语法 , 简单容易上手,提升快速开发能力
- 免去写MapReduce , 减少开发人员的开发时间成本
- 可以与Impala / Spark等共享元数据
- 易于扩展 , 支持自定义函数 , 自定义存储位置等
Hive的执行流程
- 用户提交查询等任务给Driver。
- 编译器 (Driver的组件) 获得该用户的任务Plan。
- 编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。
- 编译器Compiler得到元数据信息,对任务进行编译,HQL----->抽象语法树----->查询块----->逻辑的查询计划----->物理的计划(MapReduce), 最后选择最佳的策略。
- 将最终的计划提交给Driver。
- Driver将计划Plan转交给ExecutionEngine去执行,获取元数据信息,提交给JobTracker或者SourceManager执行该任务,任务会直接读取HDFS中文件进行相应的操作。
- 获取执行的结果。
- 取得并返回执行结果。
SQL转化成MapReduce过程
SQL转换成MapReduce的执行计划包括如下几个步骤:
HiveSQL ->AST(抽象语法树) -> QB(查询块) ->OperatorTree(操作树)->优化后的操作树->mapreduce任务树->优化后的mapreduce任务树
如图所示 :
- Parser : 通俗理解就是SQL的语法规则 , 不用深究 , 就是将SQL转化为抽象语法树AST Tree
- Semantic Analyzer : 遍历AST Tree , 遍历出基本组成单元QueryBlock
- Logical plan : 遍历QueryBlock , 翻译为OpratorTree(操作树)
- Logical plan optimizer: 逻辑层优化器进行OperatorTree变换,合并ReduceSinkOperator,减少shuffle数据量;
- Physical plan:遍历OperatorTree,翻译为MapReduce任务;
- Logical plan optimizer:物理层优化器进行MapReduce任务的变换,生成最终的执行计划;
最后
以上就是清新老师为你收集整理的数仓--Hive--总结之Hive架构原理的全部内容,希望文章能够帮你解决数仓--Hive--总结之Hive架构原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复